遍历数组中的哈希

Iterating over Hashes inside Arrays

我有这个哈希数组...

people = [
{:name => "Nick", :age => 28},
{:name => "John", :age => 29},
{:name => "Lisa", :age => 25},
{:name => "Brynn", :age => 24}
]

我想使用以下代码打印出每个人的姓名:

people.map { |x| x[:name] }
names = []
people.each { |x| names << x[:name]}

这行得通,但我不明白这是怎么回事(别人帮我解决了这个问题):

people.map { |x| x[:name] }

谁能给我解释一下?谢谢!

这一行没有做任何事情,因为你丢弃了它的 return 值:

people.map { |x| x[:name] }

也与后面两行无关

如果您想生成姓名列表,请使用该行并丢弃最后两个,但存储姓名数组 returned:

names = people.map { |x| x[:name] }

这就是您所需要的。它遍历数组 people,使用块中的 return 值构建一个新数组。从本质上讲,它与您的最后两行完全相同,但在一行中。

这两个片段在功能上相同,但彼此无关。您需要二选一:

names = people.map { |x| x[:name] }

names = []
people.each { |x| names << x[:name] }

这就是您必须访问散列键值的方式。

哈希 = {名称:"manu"}

为了从哈希中获取 manu,你必须做

hash[:name]

名称可以是你想要的键