我有一个包含 31 个项目的 dates 数组(为清楚起见,此处缩短)
Tuesday 8, November
Wednesday 9, November
#etc.
和一个包含 31 个项目的 movies 哈希,每个项目包含电影名称和放映时间(为清楚起见,此处缩短)
{:movie=>"The Neon Demon", :time=>"4:15 PM"}
{:movie=>"Breaking a Monster", :time=>"6:45 PM"}
{:movie=>"The Citizen", :time=>"9:00 PM"}
我正在尝试为具有这种结构的 json 输出构建哈希
[
{
"Tuesday 8, November": {
"movies": [
{
"movie": "The Neon Demon",
"time": "4:15 PM"
},
{
"movie": "Breaking a Monster",
"time": "6:45 PM"
},
{
"movie": "The Citizen",
"time": "9:00 PM"
}
]
},
{
"Wednesday 9, November": {
"movies": [
{
"movie": "The First Monday in May",
"time": "4:15 PM"
},
{
"movie": "The Neon Demon",
"time": "6:30 PM"
},
{
"movie": "Breaking a Monster",
"time": "9:00 PM"
}
]
}, #etc
}
]
我现在正在用
Output = []
Output << { dates => { movies: movies }}
puts JSON.pretty_generate Output
但它没有正确排列元素,我想不出最好的方法。任何人都可以告诉我如何正确地做这件事吗?谢谢
最佳答案
您真的只是一次调用 zip
的电话远离解决方案:
movies = [
{:movie=>"The Neon Demon", :time=>"4:15 PM"},
{:movie=>"Breaking a Monster", :time=>"6:45 PM"},
{:movie=>"The Citizen", :time=>"9:00 PM"}
]
dates = [
'Tuesday 8, November',
'Wednesday 9, November',
'Thursday 10, November'
]
dates.zip(movies).to_h
# => {"Tuesday 8, November"=>{:movie=>"The Neon Demon", :time=>"4:15 PM"}, ... }
请注意,从编程的角度来看,这样的日期格式非常烦人,因为它们无法排序并且是特定于语言的。 ISO 日期格式,如 2016-11-08
在实践中效果更好。
关于arrays - Ruby:通过将数组映射到数组来构建哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40477594/