使用Ruby将哈希切成相等的切片

时间:2013-09-15 00:50:08

标签: ruby

如何使用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}]

2 个答案:

答案 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