Techioz Blog

Ruby: ハッシュの配列を反復処理して単一の文字列の値を返すにはどうすればよいですか?

概要

明らかなことでしたら申し訳ありませんが、私には理解できません。次のようなハッシュの配列がある場合:

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

そして、配列を反復処理して、「Bob: Builder」のような文字列を出力したいと考えています。どうすればいいでしょうか?反復方法は理解しましたが、まだ少し迷っています。現在、私は次のものを持っています:

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

私の問題は、両方の値を返す方法が理解できず、各値を個別に返す方法だけを理解していることです。私には何が欠けているのでしょうか?

助けてくれてありがとう。

解決策

どうぞ:

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