遍历数组中的哈希
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]
名称可以是你想要的键
我有这个哈希数组...
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]
名称可以是你想要的键