Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 合并散列数组_Ruby_Arrays_Hash - Fatal编程技术网

Ruby 合并散列数组

Ruby 合并散列数组,ruby,arrays,hash,Ruby,Arrays,Hash,我有两个数组,每个数组都包含属性哈希 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}]] 数组中的每个数组都保存对象的属性哈希。在上面的示例中,我正在处理两个对象。对于这两个对象,

我有两个数组,每个数组都包含属性哈希

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}]]
数组中的每个数组都保存对象的属性哈希。在上面的示例中,我正在处理两个对象。对于这两个对象,每个数组中都有两个属性

如何合并这两个数组?我试图获得一个由“object”数组组成的单个数组从一开始就无法获得单个数组,因为我必须进行两个不同的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}]]

我尝试了两种方法,包括迭代方法和合并方法,但我无法获得所需的数组。

我认为我的答案不再有效,因为问题已在稍后编辑

在这里,首先我要修正你的问题中的数组和散列符号

Array1 = [{'attribute_1' => 'A', 'attribute_2' => 'B'}, {'attribute_1' => 'A', 'attribute_2' => 'B'}]
#=> [{"attribute_1"=>"A", "attribute_2"=>"B"}, {"attribute_1"=>"A", "attribute_2"=>"B"}]
Array2 = [{'attribute_3' => 'C', 'attribute_2' => 'D'}, {'attribute_3' => 'C', 'attribute_4' => 'D'}]
#=> [{"attribute_2"=>"D", "attribute_3"=>"C"}, {"attribute_3"=>"C", "attribute_4"=>"D"}]
您只需将这两个数组连接起来即可获得所需的数组,如下所示:

DesiredArray = Array1+Array2
# => [{"attribute_1"=>"A", "attribute_2"=>"B"}, {"attribute_1"=>"A", "attribute_2"=>"B", {"attribute_2"=>"D", "attribute_3"=>"C"}, {"attribute_3"=>"C", "attribute_4"=>"D"}]

我认为我的答案不再有效,因为这个问题后来被编辑过

在这里,首先我要修正你的问题中的数组和散列符号

Array1 = [{'attribute_1' => 'A', 'attribute_2' => 'B'}, {'attribute_1' => 'A', 'attribute_2' => 'B'}]
#=> [{"attribute_1"=>"A", "attribute_2"=>"B"}, {"attribute_1"=>"A", "attribute_2"=>"B"}]
Array2 = [{'attribute_3' => 'C', 'attribute_2' => 'D'}, {'attribute_3' => 'C', 'attribute_4' => 'D'}]
#=> [{"attribute_2"=>"D", "attribute_3"=>"C"}, {"attribute_3"=>"C", "attribute_4"=>"D"}]
您只需将这两个数组连接起来即可获得所需的数组,如下所示:

DesiredArray = Array1+Array2
# => [{"attribute_1"=>"A", "attribute_2"=>"B"}, {"attribute_1"=>"A", "attribute_2"=>"B", {"attribute_2"=>"D", "attribute_3"=>"C"}, {"attribute_3"=>"C", "attribute_4"=>"D"}]

您似乎有并行的哈希数组。我们可以使用zip将并行数组转换为散列数组的单个数组。然后,我们可以使用inject and merge将每个哈希数组映射到单个哈希:


您似乎有并行的哈希数组。我们可以使用zip将并行数组转换为散列数组的单个数组。然后,我们可以使用inject and merge将每个哈希数组映射到单个哈希:


@本,不客气!我编辑了我的答案以反映你的更正。@Ben,不客气!我编辑了我的答案以反映你的更正。