Ruby:最常用的修改哈希数组的方法是什么?

时间:2014-05-05 15:45:11

标签: ruby-on-rails ruby arrays hash

我正在使用未排序的哈希数组,其中数组中哈希的顺序并不重要。每个哈希都有一个:id主键,用于在数组中查找它。该系统的设计超出了我的控制范围。

我必须为:

设计一个读 - 修改 - 写系统
  1. 在数组中查找哈希(by:id)。

  2. 对哈希中的其他键执行修改。

  3. 将此哈希保存回数组。

  4. 现在,要做到这一点并且努力工作并不难。但 Ruby 的答案是什么?

    谢谢!

2 个答案:

答案 0 :(得分:4)

a = [{id: 1, x: :y}, {id: 2, x: :z}, ...]

查找ID 2

a.find{|h| h[:id] == 2} # => {:id=>2, :x=>:z}

更改身份:x的{​​{1}}属性值:

2

答案 1 :(得分:1)

如果您想更改哈希,您需要做的就是find它:

h = arr.find { |h| h[:id] == id }
h[:change_me] = 'changed!'

如果你想替换,你最好dup

h = arr.delete_if { |h| h[:id] == id }.first.dup
h[:change_me] = 'changed!'
arr << h