簡體   English   中英

Ruby:修改哈希數組的最慣用方式?

[英]Ruby: Most idiomatic way to modify an array of hashes?

我正在使用未排序的哈希數組,其中數組中哈希的順序並不重要。 每個哈希都有一個:id主鍵,用於在數組中查找它。 該系統的設計超出了我的控制范圍。

我必須為以下項目設計一個讀-修改-寫系統:

  1. 在數組中查找哈希(通過:id)。

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

  3. 將此哈希保存回數組。

現在,做到這一點並使它正常工作並不困難。 但是, Ruby的答案是什么?

謝謝!

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

查找ID 2

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

更改ID 2:x屬性的值:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM