簡體   English   中英

Ruby:在哈希中的數組中選擇一個值

[英]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]實際上是value1hash[key1][key2]value2

暫無
暫無

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

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