首页 > 解决方案 > Ruby - 将数组转换为哈希

问题描述

我循环这个数组(时间实例):

[2018-05-23 8:00:00, 2018-05-23 8:30:00, 2018-05-23 9:30:00, 2018-05-24 15:00:00, 2018-05-24 15:30:00]

我想把它转换成这样的哈希:

{"2018-05-23"=>["2018-05-23 8:00:00", "2018-05-23 8:30:00"], "2018-05-24"=>[]}

谢谢 !

标签: arraysrubyhash

解决方案


使用Enumerable#group_by

input = ['2018-05-23 8:00:00', '2018-05-23 8:30:00',
         '2018-05-23 9:30:00', '2018-05-24 15:00:00', '2018-05-24 15:30:00']
input.group_by { |e| DateTime.parse(e).to_date.to_s }
#⇒ {"2018-05-23"=>["2018-05-23 8:00:00", "2018-05-23 8:30:00", "2018-05-23 9:30:00"],
#   "2018-05-24"=>["2018-05-24 15:00:00", "2018-05-24 15:30:00"]}

推荐阅读