3
A
回答
5
另一種方法,使用發現
1.9.3p194 :007 > array1 = [{"name"=>"Bob"}, {"age"=>"30"}]
=> [{"name"=>"Bob"}, {"age"=>"30"}]
1.9.3p194 :008 > hash1 = array1.find { |h| h['age'] == "30" }
=> {"age"=>"30"}
1.9.3p194 :009 > hash1['age'] = 31
=> 31
1.9.3p194 :010 > array1
=> [{"name"=>"Bob"}, {"age"=>31}]
2
既然你真的有是哈希的數組,你可以索引數組,以獲得第二哈希值,然後通過傳遞"age"
作爲關鍵更新值:
1.9.3p194 :001 > h = [{"name"=>"Bob"}, {"age"=>"30"}]
=> [{"name"=>"Bob"}, {"age"=>"30"}]
1.9.3p194 :002 > h[1]["age"] = 31
=> 31
1.9.3p194 :003 > h
=> [{"name"=>"Bob"}, {"age"=>31}]
1
這樣做:
[{"name"=>"Bob"}, {"age"=>"30"}][1]["age"] = 31
3
爲什麼不將數組轉換成更簡單,更靈活的數組?你的陣列是哭出來的是一個值對象:
class Person
attr_accessor :name, :age
def initialize arr
arr.each { |h| h.each { |k,v| instance_variable_set("@#{k}", v) } }
end
def to_hash_array
instance_variables.each_with_object([]) do |iv, arr|
arr << {iv.to_s.sub('@','') => instance_variable_get(iv)}
end
end
end
def hash_array_to_person arr
person = Person.new
arr.each { |h| h.each { |k,v| person.send("#{k}=", v) } }
person
end
example = [{"name"=>"Bob"}, {"age"=>"30"}]
bob = Person.new(example)
p bob
p bob.to_hash_array
bob.age = 31
p bob.to_hash_array
輸出:
#<Person:0x00000000fe8418 @name="Bob", @age="30">
[{"name"=>"Bob"}, {"age"=>"30"}]
[{"name"=>"Bob"}, {"age"=>31}]
Ruby是不是C,你有這麼比基本的原始數據類型,更提供給您。
相關問題
- 1. 紅寶石變換散列
- 2. 紅寶石散列組合
- 3. 紅寶石和廚師:解決並替換散列中的值
- 4. 無法更改/替換紅寶石中的全局散列值
- 5. 紅寶石散列,group_by值
- 6. 詢問散列的紅寶石數組
- 7. 紅寶石數組,散列,整數
- 8. 紅寶石散列在紅寶石
- 9. 散列散列的紅寶石散列
- 10. 紅寶石字數組作爲散列?
- 11. 在散列中轉義紅寶石值
- 12. 替換紅寶石
- 13. 紅寶石散列值到數組數組
- 14. 紅寶石 - 一個數組的改變散列值值
- 15. 用紅寶石散列中的「\\ n」自動替換「\ n」
- 16. 用紅寶石中的新字符串替換散列鍵
- 17. 紅寶石代替數組列表
- 18. 轉換JSON - >紅寶石哈希散列的數組
- 19. 將紅寶石數組轉換成帶符號的散列
- 20. 紅寶石CSV.readline轉換成散列
- 21. 紅寶石字符串散列轉換
- 22. 散列中的哈希修改問題,替換紅寶石中的值
- 23. 在紅寶石中將散列數組轉換爲單個散列
- 24. 紅寶石散列組和量
- 25. 紅寶石 - 從散列
- 26. 反向散列紅寶石
- 27. 移從紅寶石散列
- 28. 排序散列紅寶石
- 29. 操縱散列紅寶石
- 30. 數組的紅寶石散列,檢索值