Ruby:如何遍历一个哈希数组并返回单个字符串中的值?

xyhw6mcr  于 12个月前  发布在  Ruby
关注(0)|答案(3)|浏览(107)

很抱歉,如果这很明显,我只是不明白。如果我有一个哈希数组,比如:

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

我想在数组上添加一个字符串,输出如下:“Bob:Builder”.我该怎么做?我知道怎么做,但我还是有点迷路。现在,我有:

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

我的问题是,我不明白如何返回两个值,只有每个值分别。我错过了什么?
感谢你的帮助.

klsxnrf1

klsxnrf11#

给您:

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

或者:

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

为了回答关于访问数组中元素的值的更一般的查询,您需要知道people是一个哈希数组。哈希有一个keys方法和values方法,分别返回键和值。考虑到这一点,更一般的解决方案可能看起来像这样:

people.each do |person|
  puts person.values.join(': ')
end
js4nwp54

js4nwp542#

也会工作:

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

输出量:

Bob : Builder
Jim : Coder
31moq8wy

31moq8wy3#

也会工作:

people.each do |name:, occupation:|
  occupation ||= 'unemployed'
  puts "#{name} : #{occupation}"
end

Ruby 3+(感谢Leo)

people.each do |person|
  person => {name:, occupation:}
  occupation ||= 'unemployed'
  puts "#{name} : #{occupation}"
 end

相关问题