【发布时间】:2015-06-01 07:17:48
【问题描述】:
我有两个哈希数组:
a1 = [{ ID: 12496, name: "Robert", email: "robert@hotmail.com" }, ...]
a2 = [{ ID: 12496, name: "Robert", ORDER_NO: 5511426 }, ...]
我想在a2 中找到其ID 和name 字段与a1 中条目的ID 和name 字段匹配的哈希(不关心email 或任何其他进入a2 的项目),然后将ORDER_NO 的值合并到这些值的a1 散列中。即最终得到:
[{ ID: 12496, name: "Robert", email: "robert@example.com", ORDER_NO: 5511426 } ...]
我还想忽略 a2 中存在但不在 a1 中的元素。
我正在做以下事情:
a1.each do |a1_hash|
matching_hash = a2.find { |a2_hash| data_matches?(a1_hash, a2_hash) } if a2.present?
a1_hash["ORDER_NO"] = a2_hash["ORDER_NO"] if matching_hash.present?
a2.delete(a2_hash)
end
但是有更快的方法吗?
【问题讨论】:
-
如果
a2包含a1中不存在的条目会怎样?目前,它们将在结果中丢失,但如果两个哈希都保证包含完全相同的 id/name 组合,则可能无关紧要。 -
@PatrickOscity 我想忽略 a1 中不存在的条目。