[英]Ruby: select a value in an array in a hash
我想遍歷哈希的每個數組的每個值。 通常,要在數組中選擇一個值,我會這樣做:
array = ["1", "2"]
array.each do |x| puts x end
但是,如果它在散列中,那么如何遍歷數組呢?
這是我的代碼:
hash = {1 => {"a1" => ["un", "uno"], "a2" => ["uunn", "uunnoo"]}, 2 => {"b1" => ["deux", "dos"], "b2" => ["ddeuxx", "ddooss"]}}
hash.each do |key, key2, value|
puts key
hash[key].each do |key, value|
puts key
#insert here the code to iterate through the array
end
end
這是我發現的最邏輯的東西,但是不起作用:
hash = {1 => {"a1" => ["un", "uno"], "a2" => ["uunn", "uunnoo"]}, 2 => {"b1" => ["deux", "dos"], "b2" => ["ddeuxx", "ddooss"]}}
hash.each do |key, key2, value|
puts key
hash[key].each do |key, value|
puts key
hash[key][value].each do |value|
puts value
end
end
end
Hash#each
塊使用兩個變量( |key,value|
)進行迭代,而Array#each
塊使用一個變量( |element|
)進行迭代。
由於您具有嵌套的哈希和數組,因此需要使用不同的變量名稱多次應用each
哈希。 puts
與縮進一起使用,以更好地顯示結構:
hash = {1 => {"a1" => ["un", "uno"], "a2" => ["uunn", "uunnoo"]}, 2 => {"b1" => ["deux", "dos"], "b2" => ["ddeuxx", "ddooss"]}}
hash.each do |id, sub_hash|
puts id
sub_hash.each do |key, sub_array|
puts " #{key}"
sub_array.each do |word|
puts " #{word}"
end
end
end
輸出
1
a1
un
uno
a2
uunn
uunnoo
2
b1
deux
dos
b2
ddeuxx
ddooss
這是您修改最少的代碼:
hash.each do |key1, value1|
puts key1
hash[key1].each do |key2, value2|
puts key2
hash[key1][key2].each do |value|
puts value
end
end
end
請注意, hash[key1]
實際上是value1
, hash[key1][key2]
是value2
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.