有一个哈希的例子:
h1 = {
a1: :a2,
b1: :b2,
c1: :c2,
d1: :d2,
e1: :e2,
f1: :f2
}
Run Code Online (Sandbox Code Playgroud)
并且有这样一个键数组:
a1 = [:b1, :d1, :f1]
Run Code Online (Sandbox Code Playgroud)
如何根据数组对这个哈希的键进行排序?不在数组中的哈希键必须按其原来的顺序位于已排序的哈希键之后。
结果:
{
b1: :b2,
d1: :d2,
f1: :f2,
a1: :a2,
c1: :c2,
e1: :e2
}
Run Code Online (Sandbox Code Playgroud)
我会这样做:
h1.slice(*a1).merge(h1.except(*a1))
#=> {:b1=>:b2, :d1=>:d2, :f1=>:f2, :a1=>:a2, :c1=>:c2, :e1=>:e2}
Run Code Online (Sandbox Code Playgroud)
Hash#sliceh1按照 中定义的顺序返回元素a1。并Hash#except归还失踪的人。并将Hash#merge这两个组合并为一个散列。
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |