ruby - 循环遍历数组并将具有新键的数据添加到单独数组中的散列中
问题描述
我目前正在开发一个从 mlb.com 抓取数据并将数据保存在数组中的应用程序。然后我想遍历数据数组并将每个元素添加到哈希中。这是我正在尝试做的一个香草示例...
players = []
names = ["Kyle Freeland", "Jon Gray", "DJ Johnson"]
names.each do |name|
players << {:name => name}
end
players
=> [{:name=>"Kyle Freeland"}, {:name=>"Jon Gray"}, {:name=>"DJ
Johnson"}]
到目前为止,这正是我想要的,但我也有一个单独的数组存储每个玩家的号码,我试图用“数字”键将其推入每个散列......
numbers = ["21", "55", "63"]
我一直在尝试通过...
numbers.each do |number|
players.each do |player|
player[:number] = number
end
end
这最终给了我...
players
[{:name=>"Kyle Freeland", :number=>"63"}, {:name=>"Jon Gray",
:number=>"63"}, {:name=>"DJ Johnson", :number=>"63"}]
所以最终的数字被推入每个散列。有没有人能想到的更简单的方法将正确的数字推到他们需要的地方?我正在抓取的所有数据都是有序的。
解决方案
names = ["Kyle Freeland", "Jon Gray", "DJ Johnson"]
numbers = ["21", "55", "63"]
players = names.zip(numbers).map { |x| { name: x[0], number: x[1] } }
#=> [{:name=>"Kyle Freeland", :number=>"21"}, {:name=>"Jon Gray", :number=>"55"}, {:name=>"DJ Johnson", :number=>"63"}]
names.zip(numbers)
基本上将 的元素与来自每个参数的相应元素合并,self
导致[["Kyle Freeland", "21"], ["Jon Gray", "55"], ["DJ Johnson", "63"]]
.
然后我们在这个数组上迭代并制作相关的哈希值。
推荐阅读
- postgresql - Pgadmin4 SQL 创建表查询在 ubuntu 18.04 上的 Postgresql 命令行中不起作用
- jquery - 使用 jquery 查找和删除 div 中的文本
- android - 使用 Android Studio 调试 C++ 库
- tensorflow - 如何重用 rnn 单元进行推理
- nlp - cTakes 在“MaxentParserWrapper - 开始处理:.DS_Strore”上花费了很长时间
- google-cloud-platform - VPC 流日志:VPC 流日志的成本是多少?
- java - 匹配直到遇到 0 或 1
- javascript - Javascript If 语句然后继续
- c# - 在 C# 中传递日期时间参数
- ios - UI 表视图错误 + 异步加载的数据