【问题标题】:How to iterate over an array of hashes in Ruby and return all of the values of a specific key in a string如何在 Ruby 中迭代哈希数组并返回字符串中特定键的所有值
【发布时间】:2022-01-18 07:54:42
【问题描述】:

我目前正在尝试遍历哈希数组,并以字符串形式返回“name”键的所有值。这是数组:

foods = 

  [
    { name: 'Dan Dan Noodles', cuisine: 'Sichuan', heat_level: 8 },
    { name: 'Nashville Hot Chicken', cuisine: 'American', heat_level: 7 },
    { name: 'Panang Curry', cuisine: 'Thai', heat_level: 4 },
  ]

这是我目前正在做的事情,我不完全确定为什么它不起作用!

  foods.each do |food|
    food.each do |k, v|
      if food == :name
        "#{v}"
      end
    end
  end

提前致谢。

【问题讨论】:

  • food == :name 将始终为 false,因为 food 是一个哈希,:name 是一个符号。您需要if k == :name,但所选答案提供了更好的方法。

标签: arrays ruby enumerable


【解决方案1】:

您可以为此使用 Enumerable#map:

p foods.map { |f| f[:name] }

您尝试使用的代码没有产生任何输出或创建任何对象,并且没有必要使用第二个循环来访问散列的单个元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 2015-08-30
    • 2021-10-01
    • 2011-02-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多