{"Journal"=>[[4, -785.0],
[13, -21.9165000915527],
[14, -213.008995056152],
[15, -50.074499130249]]}
如何在Ruby中迭代此哈希,以及如何将键和键分开?值?
答案 0 :(得分:21)
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"
}
答案 1 :(得分:14)
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