从现有数组创建嵌套数组

时间:2016-06-15 22:25:25

标签: arrays ruby date multidimensional-array

我想根据日期的用户输入创建一个日期数组。目标是获取用户输入的日期并生成16个日期对(按顺序)。

我能够想出如何生成开始日期并将它们放在一个数组中,但我无法弄清楚如何获取该数组并进一步将它们分解为子数组(日期对)。

以下是我用来生成开始日期的代码:

@date_pairs = (@input_date-105..@input_date).step(7).to_a.reverse

我尝试按以下方式创建子数组:

@date_pairs = (@input_date-105..@input_date).step(7).to_a.reverse.each { |x| Array.new(x, x-6)}

但是我收到以下错误:没有将Date隐式转换为整数

以下是我希望得到的一个例子:

@input_date = 6/15/2016
@date_pairs = [[6/15/2016, 6/9/2016], [6/8/2016, 6/2/2016], [6/1/2016, 5/24/2016].....]

目标是能够遍历@date_pairs,访问子数组中的每个值。

我计划使用此概念创建其他类型的日期对(即按月,年等分隔的日期对)

谢谢!

1 个答案:

答案 0 :(得分:1)

如果不知道你@input_date的样子,我很难确定,但我认为你真的很亲近。您可能会收到该错误,因为您的xDateTime的一个实例,并且您正试图从中减去6Integer)。也许尝试减去6.days,如下:

@date_pairs = (@input_date-105..@input_date).step(7).to_a.reverse.map { |x| [x, x-6.days] }

另请注意,Array.new(5, 6)会产生[6, 6, 6, 6, 6] - 可能不是您想要的。

希望有所帮助!