arrays - Ruby:通过将数组映射到数组来构建哈希

标签 arrays json ruby hash

我有一个包含 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/

相关文章:

java - for 循环与数组集进行比较

javascript - 具有动态数据集的动态 Javascript 多线图表

ruby - Watir 4.0.2单击会使浏览器崩溃

ruby - 有没有一种简单的方法来模拟 Dir::glob?

ruby-on-rails - 在 Ruby 中编写具有动态背景颜色的 Excel 工作表

arrays - 两个相同的子序列

java - Java中使用Scanner读取字符串

javascript - js中如何将对象转换为数组

javascript - Highcharts 错误 #13 和 AngularJs

Java:如何制作一个创建数组的循环?