1

我试图遍历一个数组并将一个键/值对合并到这个数组中我的哈希值,但是它不起作用。当我手动执行此操作时,它正在工作。我究竟做错了什么?

: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}
4

2 回答 2

3

使用合并!而不是merge. merge方法返回一个新的散列,merge!将键值对添加到散列中。

array = [{ foo: 5 }, { bar: 3 }]
array.each { |hash| hash.merge!(match: true) }
于 2019-09-12T13:12:47.553 回答
0

@demir 的回答是正确的。

如果您不想更改原始数组。您可以使用map代替each并将输出分配给新变量。

array = [{ foo: 5}, { bar: 3 }]
new_array = array.map { |hsh| hsh.merge(match: true) }
于 2019-09-12T17:32:35.387 回答