How do I iterate over an array of hashes and retur

2019-03-16 06:23发布

Sorry if this obvious, I'm just not getting it. If I have an array of hashes like:

people = [{:name => "Bob", :occupation=> "Builder"}, {:name => "Jim", :occupation =>
"Coder"}]

And I want to iterate over the array and output strings like: "Bob: Builder". How would I do it? I understand how to iterate, but I'm still a little lost. Right now, I have:

people.each do |person|
  person.each do |k,v|
    puts "#{v}"
  end
end

My problem is that I don't understand how to return both values, only each value separately. What am I missing?

Thank you for your help.

标签: ruby hash
2条回答
Explosion°爆炸
2楼-- · 2019-03-16 06:50

Here you go:

puts people.collect { |p| "#{p[:name]}: #{p[:occupation]}" }

Or:

people.each do |person|
  puts "#{person[:name]}: #{person[:occupation]}"
end

In answer to the more general query about accessing the values in elements within the array, you need to know that people is an array of hashes. Hashes have a keys method and values method which return the keys and values respectively. With this in mind, a more general solution might look something like:

people.each do |person|
  puts person.values.join(': ')
end
查看更多
我想做一个坏孩纸
3楼-- · 2019-03-16 06:51

Will work too:

people.each do |person|
  person.each do |key,value|
    print key == :name ? "#{value} : " : "#{value}\n"
  end
end

Output:

Bob : Builder
Jim : Coder
查看更多
登录 后发表回答