从动态格式化日期键创建数组

时间:2017-09-27 20:36:06

标签: ruby ruby-on-rails-3 ruby-on-rails-4

我试图创建一个使用年月作为键的哈希。请考虑以下代码:

SharedPreferences

上面的代码创建了一个格式化的日期数组,如下所示:

(start_date..end_date).map { |date| date.strftime('%Y-%m') }.uniq

但是,你会怎么做类似的事情,将这个格式化日期作为键,空数组作为值?看起来像这样:

["2017-05", "2017-06", "2017-07", "2017-08", "2017-09", "2017-10", "2017-11", "2017-12", "2018-01", "2018-02", "2018-03", "2018-04", "2018-05"]

提前致谢!

1 个答案:

答案 0 :(得分:1)

您实际上可以采取您的方法并在此基础上进行构建:

(start_date..end_date)
  .map { |date| date.strftime('%Y-%m') }
  .uniq
  .map { |date| [date, []] }
  .to_h

=> {"2017-05"=>[], "2017-06"=>[], "2017-07"=>[], "2017-08"=>[], "2017-09"=>[], "2017-10"=>[], "2017-11"=>[], "2017-12"=>[], "2018-01"=>[], "2018-02"=>[], "2018-03"=>[], "2018-04"=>[], "2018-05"=>[]} 

但这可以简化为:

(start_date..end_date)
  .map { |date| [date.strftime('%Y-%m') , []] }
  .to_h

范围创建的日期已经是唯一的。