Ruby:如何在哈希中访问数组的每个元素,其中哈希键是我想要访问的数组

时间:2014-05-31 20:27:22

标签: ruby

我有:

Array1 = [x, y, z]
Array2 = [m, n]
a = b

hash1 = {Array1 => val1,
         Array2 => val2,
         a => c
        }

如何在hash1内的Array1,Array2的每个元素内迭代?

hash1.each do |t|
  t[0] #gives me Array1 as a string. I need [x,y,z]

end 

2 个答案:

答案 0 :(得分:1)

它不会给你一个字符串。它为您提供了正确的数组。

{
  [1,2] => 'a'
}.each{|t| puts t[0].class}
# prints array
{
  [1,2] => 'a'
}.each{|t| puts t[0][0]}
# prints 1

请注意,您正在使用哈希进行各项操作。您可以解构为块提供两个变量的键值对,如下所示:

{a:1, b:2}.each { |k,v| p k; p v }
#prints :a
#prints 1
#prints :b
#prints 2

答案 1 :(得分:0)

像这样的东西

hash1.keys.each do |k|
  if k.is_a?(Array)
    k.each do |v|
      .. Do something here ..
    end
  end
end

只需将Do something here替换为您想要的代码,v将是数组中的值