2014-05-05 35 views
0

我正在處理一個未排序的哈希數組,其中數組中的哈希順序並不重要。每個散列都有一個:id主鍵,用於在數組中找到它。這個系統的設計超出了我的控制範圍。Ruby:修改哈希數組最常用的方法是?

我必須設計一個讀 - 修改 - 寫系統:在陣列內:

  1. 仰望哈希(ID通過)。

  2. 對散列中的其他鍵執行修改。

  3. 將此散列保存回數組。

現在,這並不難,做到這一點,並得到它的工作。但是什麼是紅寶石的答案?

謝謝!

+1

你說的「執行修改散列內** **其他鍵」是什麼意思? – sawa

+1

這聽起來像你想要的數據結構是一個哈希而不是一個數組。 – Chuck

+0

@Chuck確實。但它說:「這個系統的設計超出了我的控制範圍。」 – sawa

回答

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

仰望ID 2

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

:x屬性更改值ID 2

a.find{|h| h[:id] == 2}[:x] = :w 
1

如果你想變化哈希,所有你需要do是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