为什么我无法在每个循环中合并哈希

  • 本文关键字:循环 合并 哈希 ruby
  • 更新时间 :
  • 英文 :


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

: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! 而不是mergemerge方法返回一个新的哈希,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) }

最新更新