从动态格式化日期键创建数组
Creating array from dynamic formatted date keys
我正在尝试创建一个使用年-月作为键的散列。考虑这段代码:
(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"]
但是,如果使用此格式化日期作为键并使用空数组作为值,您将如何做类似的事情?看起来像这样:
{ "2017-05": [], "2017-06": [], "2017-07": [] ...}
提前致谢!
您实际上可以采用您的方法并以此为基础:
(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
范围创建的日期已经是唯一的。
我正在尝试创建一个使用年-月作为键的散列。考虑这段代码:
(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"]
但是,如果使用此格式化日期作为键并使用空数组作为值,您将如何做类似的事情?看起来像这样:
{ "2017-05": [], "2017-06": [], "2017-07": [] ...}
提前致谢!
您实际上可以采用您的方法并以此为基础:
(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
范围创建的日期已经是唯一的。