如何使用ruby将哈希切割成相等哈希切片的数组?特别是这样的事情:
ORIGINAL HASH
a = {:a=>1, :b=>2, :c=>3, :d=>4}
编辑:从下面添加答案,以便快速参考。请参阅下文以获得更好的解释。
这里有一些代码可以解决2个平等分析
a.each_slice(2).map{|slice| Hash[slice]}
RESULT
a = [{:a=>1, :b=>2}, {:c=>3, :d=>4}]
答案 0 :(得分:4)
h = {:a=>1, :b=>2, :c=>3, :d=>4}
p h.each_slice(2).map{|slice| Hash[slice]} # => [{:a=>1, :b=>2}, {:c=>3, :d=>4}]
答案 1 :(得分:2)
一种方法:
arr = []
a.each_slice(2) {|s| arr << Hash[s]}
为上面的2
选择您想要的任何值。
作为一种方法:
def slice( a, n )
arr = []
a.each_slice(n) {|s| arr << Hash[s]}
arr
end
或更简单:
def slice( a, n )
a.each_slice(n).inject([]) {|a, p| a << Hash[p]}
end