我有两个数组,每个数组都包含属性哈希的数组.
Array1 => [[{attribute_1 = A}, {attribute_2 = B}], [{attribute_1 = A}, {attribute_4 = B}]]
Array2 => [{attribute_3 = C}, {attribute_2 = D}], [{attribute_3 = C, attribute_4 = D}]]
Run Code Online (Sandbox Code Playgroud)
数组中的每个数组都保存对象的属性哈希值.在上面的例子中,我正在使用两个对象.每个数组中有两个属性用于两个对象.
如何合并这两个数组?我试图得到一个'对象'数组的单个数组(从一开始就无法获得单个数组,因为我必须进行两次不同的API调用才能获得这些属性).
DesiredArray => [[{attribute_1 = A, attribute_2 = B, attribute_3 = C, attribute_4 = D}],
[{attribute_1 = A, attribute_2 = B, attribute_3 = C, attribute_4 = D}]]
Run Code Online (Sandbox Code Playgroud)
我尝试了一些东西,包括迭代方法和合并方法,但我一直无法得到我需要的数组.
你似乎有哈希的并行数组.我们可以使用zip将并行数组转换为哈希数组的单个数组.然后我们可以使用inject和将每个哈希数组映射到一个哈希merge:
#!/usr/bin/ruby1.8
require 'pp'
array1 = [{:attribute_1 => :A, :attribute_2 => :B}, {:attribute_1 => :A, :attribute_4 => :B}]
array2 = [{:attribute_3 => :C, :attribute_2 => :D}, {:attribute_3 => :C, :attribute_4 => :D}]
pp array1.zip(array2).collect { |array| array.inject(&:merge) }
# => [{:attribute_2=>:D, :attribute_1=>:A, :attribute_3=>:C},
# => {:attribute_4=>:D, :attribute_1=>:A, :attribute_3=>:C}]
Run Code Online (Sandbox Code Playgroud)