I have two arrays of hashes:
a = [
  {
    key: 1,
    value: "foo"
  },
  {
    key: 2,
    value: "baz"
  }
]
b = [
  {
    key: 1,
    value: "bar"
  },
  {
    key: 1000,
    value: "something"
  }
]
I want to merge them into one array of hashes, so essentially a + b except I want any duplicated key in b to overwrite those in a. In this case, both a and b contain a key 1 and I want the final result to have b's key value pair.
Here's the expected result:
expected = [
  {
    key: 1,
    value: "bar"
  },
  {
    key: 2,
    value: "baz"
  },
  {
    key: 1000,
    value: "something"
  }
]
I got it to work but I was wondering if there's a less wordy way of doing this:
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
 
     
     
     
     
     
    