简体   繁体   中英

Ruby: How to access each element of an array inside a hash where hash key is the array I want to access

I have:

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

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

How to iterate inside each element of Array1, Array2 inside the hash1?

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

end 

It don't give you a string. It give you the correct array.

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

Note that you are doing each on a hash. You can deconstruct the key-value pair giving two variables to the block, like this:

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

Something like this

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

Just replace the Do something here with the code you want, and v will be the value in the array

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM