【问题标题】:Ruby: How do I iterate over an array of hashes and return the values in a single string?Ruby:如何遍历散列数组并以单个字符串返回值?
【发布时间】:2014-07-06 06:20:56
【问题描述】:

对不起,如果这很明显,我就是不明白。如果我有一个哈希数组,例如:

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

我想遍历数组并输出字符串,例如:“Bob: Builder”。我该怎么做?我知道如何迭代,但我还是有点迷茫。现在,我有:

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

我的问题是我不明白如何返回两个值,只分别返回每个值。我错过了什么?

感谢您的帮助。

【问题讨论】:

    标签: ruby hash


    【解决方案1】:

    也可以:

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

    输出:

    Bob : Builder
    Jim : Coder
    

    【讨论】:

      【解决方案2】:

      给你:

      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
      

      【讨论】:

      • 非常感谢!这对我来说完全清除了。再次感谢!
      • .collect 方法效果最好。 .each 方法造成了很多重复。如果你想使用 .each 你必须嵌套
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多