ruby—遍历包含键/数组值对的哈希,并遍历每个值

ruby—遍历包含键/数组值对的哈希,并遍历每个值,ruby,Ruby,我有一个如下所示的散列: { "key1": [ "value1", "value2", "value3" ], "key2": [ "value1", "value2", "value3", "value4", "value5" ], "key3": [ "value1" ], "key4": [ "value1", "value2" ] } hash

我有一个如下所示的散列:

{
  "key1": [
     "value1",
     "value2",
     "value3"
  ],
  "key2": [
     "value1",
     "value2",
     "value3",
     "value4",
     "value5"
  ],
  "key3": [
     "value1"
  ],
  "key4": [
     "value1",
     "value2"
  ]
}
hash.each do |key, array|
  array.each do |value|
    # do something
  end
end
如何迭代每个键,同时循环遍历该键中的所有值

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

谢谢

非常简单,真的:

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

您可以使用最低级别的
name
value
执行任何您想要的操作。

您可以这样做:

{
  "key1": [
     "value1",
     "value2",
     "value3"
  ],
  "key2": [
     "value1",
     "value2",
     "value3",
     "value4",
     "value5"
  ],
  "key3": [
     "value1"
  ],
  "key4": [
     "value1",
     "value2"
  ]
}
hash.each do |key, array|
  array.each do |value|
    # do something
  end
end

如果您确定数组的大小,只需这样做

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

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

Output
:a
1
2

可能的复制品确实很简单——是以错误的方式看待它的。谢谢,一旦你掌握了窍门,你会发现这种模式适用于各种情况
。每个
都是大多数Ruby应用程序的主干。像
keyN
这样的名称应该是
keyN
,以遵循Ruby惯例。大写字母有着重要的意义,特别是当涉及到
常量名称
类名
@tadman时,谢谢你指出这一点。我已经更新了我的答案。通常在变量名中完全避免使用大写字母,这只是混淆了事情。不是
so
,而是
do