ruby-on-rails - 合并两个都具有键值对的数组 (Ruby)

标签 ruby-on-rails ruby arrays merge

我想知道如何在 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/

相关文章:

java - 从 String[] 中提取数字

php - 如何判断一个数组是否有元素?

ruby-on-rails - RAILS/DEVISE - 设置设计 cookie 以在不同的子域中持续存在

ruby-on-rails - 如何删除 ActiveSupport 的 from/to xml 中的数组标签?

ruby - 将 Ruby 脚本作为 Sinatra 的子进程/另一个线程运行的最佳方法是什么?

ruby - 尝试重构 ruby​​ 代码,使参数列表不那么长

javascript - 使用 json 中的值填充输入字段

ruby-on-rails - 参数数量错误 [ex :(3 for 2)] in methods [but only pass 2]

ruby-on-rails - 使用环境变量更改 HTTPI SSL 默认证书文件位置

javascript - 如何从特定的另一个对象创建对象