我想知道如何在 Ruby 中将这两个数组合并为一个干净的数组
两个数组共享一个相似的键值对。我正在尝试合并来自这两个单独数组的信息,这些数组具有同一个人的信息。一个数组有他的名字。另一个数组有他的工作和年龄。两个数组都有一个与同一个人匹配的 ID。
我正在尝试做的一个例子
array1 = [ {:id => 1, :name => "Bob"}, {:id => 2, :name => "Tim"}]
array2 = [ {:id => 1, :job => "firefighter", :age => 25}, { :id => 2, :job => "accountant", :age => 30} ]
new_array = [ {:id=> 1, name => "Bob", :job => "firefighter", :age => 25}, { :id => 2, :name => "Tim", :job => "accountant", :age => 30} ]
最佳答案
你可以这样做:
new_array = array1.each_with_index.map { |x, i| x.merge array2[i] }
# => [{:id=>1, :name=>"Bob", :job=>"firefighter", :age=>25}, {:id=>2, :name=>"Tim", :job=>"accountant", :age=>30}]
如果您想要一个不依赖于数组顺序的解决方案,而是使用 :id
来匹配哈希:
array1.map { |x| x.merge (array2.find { |h| h[:id] == x[:id] } || {}) }
关于ruby-on-rails - 合并两个都具有键值对的数组 (Ruby),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26107416/