我正在尝试遍历数组并将一个键/值对合并到该数组中的哈希值,但是它不起作用。当我手动执行此操作时,它正在工作。我做错了什么?
:001 > array = [{foo: 5}, {bar: 3}]
=> [{:foo=>5}, {:bar=>3}]
:002 > array.each{|hash| hash.merge(match: true)}
=> [{:foo=>5}, {:bar=>3}]
:003 > array[0].merge(match: true)
=> {:foo=>5, :match=>true}
使用 merge! 而不是merge
。merge
方法返回一个新的哈希,merge!
将键值对添加到哈希中。
array = [{ foo: 5 }, { bar: 3 }]
array.each { |hash| hash.merge!(match: true) }
@demir的回答是正确的。
如果您不想更改原始数组。您可以使用map
而不是each
并将输出分配给新变量。
array = [{ foo: 5}, { bar: 3 }]
new_array = array.map { |hsh| hsh.merge(match: true) }