你会如何使用 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}]
你会如何使用 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}]
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}]
一种方法:
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