{"Journal"=>[[4, -785.0],
[13, -21.9165000915527],
[14, -213.008995056152],
[15, -50.074499130249]]}
如何在Ruby中迭代此散列,以及如何分隔出鍵值&值?迭代哈希集合
{"Journal"=>[[4, -785.0],
[13, -21.9165000915527],
[14, -213.008995056152],
[15, -50.074499130249]]}
如何在Ruby中迭代此散列,以及如何分隔出鍵值&值?迭代哈希集合
myHash.each do |key, value|
// key holds the key, value holds the value
end
如果要變換的陣列的陣列內的地圖做到這一點:
myNewHash = {}
myArrayOfArrays = myHash["Journal"]
myArrayOfArrays.each do | item |
myNewHash[item[0]] = item[1]
end
Ruby有一個統一的迭代接口。 Ruby中的所有集合都有一個名爲each
的方法,它允許您遍歷集合中的每個元素。但是請注意,顯式迭代是一種代碼異味。您應該主要使用更高級別的迭代器,如map
,reduce
,select
,find
,reject
等。
在其中集合是一個Hash
,正被產生到您的塊中的每個元件此特定情況下,是由鍵和值的二單元陣列:
print hsh.reduce('') {|s, el|
s << "The key is #{el.first} and the value is #{el.last}.\n"
}
由於Ruby的解構綁定,你可以簡單地在陣列的兩個元素綁定到你的格擋兩個變量,你會不會需要不斷的拆開陣列:
print hsh.reduce('') {|s, (k, v)|
s << "The key is #{k} and the value is #{v}.\n"
}
如果需要通過一個HashMap迭代,你是也許使用錯誤的容器 – Scoregraphic 2010-08-16 13:32:34
@分數圖 - 不一定 - 這並不罕見。例如:序列化數據。 – 2010-08-16 13:36:09
等待,你有一個單一的鍵/值對的散列,其值是一個數組數組? – haffax 2010-08-16 13:39:38