迭代阵列中的哈希

时间:2015-02-02 20:59:59

标签: ruby arrays hash

我有这个哈希数组...

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] }

有人可以向我解释一下吗?谢谢!

2 个答案:

答案 0 :(得分:3)

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

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

它也与后续两行无关。

如果要生成名称列表,则使用该行并丢弃最后两行,但存储要返回的名称数组:

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

这就是你所需要的一切。迭代数组people,使用块中的返回值构建一个新数组。从本质上讲,它确实完成了你的最后两行所做的事情,但是在一条简洁的界限中。

这两个片段在功能上是相同的,但彼此无关。你需要选择一个或另一个:

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

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

答案 1 :(得分:0)

只是您必须访问哈希键的值的方式。

hash = {name:&#34; manu&#34;}

为了从你需要做的哈希中获取manu

hash[:name]

名称可以是您想要的关键