下面是一个散列的例子:
h1 = {
a1: :a2,
b1: :b2,
c1: :c2,
d1: :d2,
e1: :e2,
f1: :f2
}
并且有这样一组键:
a1 = [:b1, :d1, :f1]
如何根据数组对此哈希的键进行排序?不在数组中的哈希键必须按排序的顺序出现在排序的哈希键之后.
结果:
{
b1: :b2,
d1: :d2,
f1: :f2,
a1: :a2,
c1: :c2,
e1: :e2
}
下面是一个散列的例子:
h1 = {
a1: :a2,
b1: :b2,
c1: :c2,
d1: :d2,
e1: :e2,
f1: :f2
}
并且有这样一组键:
a1 = [:b1, :d1, :f1]
如何根据数组对此哈希的键进行排序?不在数组中的哈希键必须按排序的顺序出现在排序的哈希键之后.
结果:
{
b1: :b2,
d1: :d2,
f1: :f2,
a1: :a2,
c1: :c2,
e1: :e2
}
我会这么做:
h1.slice(*a1).merge(h1.except(*a1))
#=> {:b1=>:b2, :d1=>:d2, :f1=>:f2, :a1=>:a2, :c1=>:c2, :e1=>:e2}
Hash#slice
按照元素在a1
中的定义顺序返回h1
中的元素.而Hash#except
则返回丢失的数据.Hash#merge
将两个组合并为一个散列.