1

你会如何使用 ruby​​ 将一个哈希切片成一个相等的哈希切片数组?特别是这样的:

原始哈希

a = {:a=>1, :b=>2, :c=>3, :d=>4}

编辑:从下面添加答案以供快速参考。请参阅下文以获得更好的解释。

这里有一些代码可以分成 2 个相等的切片

a.each_slice(2).map{|slice| Hash[slice]}

结果

a = [{:a=>1, :b=>2}, {:c=>3, :d=>4}]
4

2 回答 2

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}]
于 2013-09-15T01:12:56.963 回答
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
于 2013-09-15T00:59:58.587 回答