【发布时间】:2017-09-26 21:25:11
【问题描述】:
我有两个哈希数组:
a = [
{
key: 1,
value: "foo"
},
{
key: 2,
value: "baz"
}
]
b = [
{
key: 1,
value: "bar"
},
{
key: 1000,
value: "something"
}
]
我想将它们合并到一个哈希数组中,所以基本上是a + b,除了我希望b 中的任何重复键覆盖a 中的那些键。在这种情况下,a 和 b 都包含一个键 1,我希望最终结果具有 b 的键值对。
这是预期的结果:
expected = [
{
key: 1,
value: "bar"
},
{
key: 2,
value: "baz"
},
{
key: 1000,
value: "something"
}
]
我得到了它的工作,但我想知道是否有一种不那么罗嗦的方法:
hash_result = {}
a.each do |item|
hash_result[item[:key]] = item[:value]
end
b.each do |item|
hash_result[item[:key]] = item[:value]
end
result = []
hash_result.each do |k,v|
result << {:key => k, :value => v}
end
puts result
puts expected == result # prints true
【问题讨论】:
-
您想要哈希的功能:您想要唯一的键,并且想要一种更简单的方法来合并您的数据。所以只需使用哈希,就像@Ilya 的回答一样。