访问ruby哈希的元素

时间:2018-03-27 07:49:30

标签: ruby-on-rails ruby

Ruby 2.15

我定义了以下哈希:

test = Hash.new
test["foo"] = {
  'id' => 5,
  'lobbyist_id' => 19,
  'organization_id' => 8
}

如果我这样做

test.each do |t|
  print t["id"] 
end

我明白了:

TypeError: no implicit conversion of String into Integer
    from (irb):1571:in `[]'

如何使用每个循环访问元素?

答案:

test.each do |t|
   t.each do |t1|
     puts t1["id"]
   end  
end

2 个答案:

答案 0 :(得分:2)

使用Hash,首先通过键,然后是值进行迭代。所以让你的块使用你需要的东西。

test.each do |key|
  puts key
end

test.each do |key, value|
  puts key
  puts value
end

还有

test.each_key do |key|
  puts key
end

test.each_value do |value|
  puts value
end

旁注:idtest["foo"]内,所以也许你需要2个循环

直接从哈希中获取id

test["foo"]["id"]

test["foo"].each {|k, v| puts "#{k}: #{v}" }

答案 1 :(得分:0)

在您的示例中,我们假设您之前已完成:

test = Hash.new

在您的示例中,变量test是一个哈希值,foo是一个键,其值包含键值的哈希值。如果你想定位那些,你需要循环它们

test['foo'].each do |k,v|
  puts "my key is #{k}"
  puts "it's value is {v}
end

如果你想同时做两件事:

test.each do |k,v|
  puts "base hash key #{k}"
  puts "base hash value #{v}"
  v.each do |kk,vv|
    puts "key #{kk}"
    puts "value #{vv}"
  end
end