【问题标题】:ruby - iterate through a hash containing key/array value pairs, and iterate through each valueruby - 遍历包含键/数组值对的哈希,并遍历每个值
【发布时间】:2016-08-19 14:49:00
【问题描述】:

我有一个看起来像这样的哈希:

{
  "key1": [
     "value1",
     "value2",
     "value3"
  ],
  "key2": [
     "value1",
     "value2",
     "value3",
     "value4",
     "value5"
  ],
  "key3": [
     "value1"
  ],
  "key4": [
     "value1",
     "value2"
  ]
}

如何遍历每个 keyN,同时遍历该键中的所有值?

如果有帮助,我有一个包含所有键的数组。

谢谢

【问题讨论】:

标签: ruby


【解决方案1】:

非常简单,真的:

hash.each do |name, values|
  values.each do |value|
    # ...
  end
end

您可以使用最低级别的namevalue 为所欲为。

【讨论】:

  • 确实很简单——看错了。谢谢
  • 一旦你掌握了窍门,你会发现这种模式适用于各种情况。 .each 是大多数 Ruby 应用程序的支柱。
【解决方案2】:

如果你确定数组的大小,你可以这样做,

ha = {:a => [1,2]}

ha.each do |k, (v1, v2)|
   p k
   p v1
   p v2
end

Output
:a
1
2

【讨论】:

    【解决方案3】:

    你可以这样做:

    hash.each do |key, array|
      array.each do |value|
        # do something
      end
    end
    

    【讨论】:

      【解决方案4】:
      hash.each do |key_N, values_N|
        values_N.each so |values|
        .
        .
        #YourCode
        .
        .
        end
      end
      

      【讨论】:

      • keyN 这样的名称应该是 key_n 以遵循 Ruby 约定。大写字母具有重要意义,尤其是在涉及CONSTANT_NAMESClassNames 时。
      • @tadman 感谢您指出这一点。我已经更新了我的答案。
      • 到达那里。通常,变量名中完全避免使用大写字母,这只会使事情变得混乱。
      • 不是so,而是do
      猜你喜欢
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      相关资源
      最近更新 更多