Ruby:基于条件的Split / Sort数组

时间:2014-11-05 22:32:25

标签: ruby arrays sorting split

我有一系列假期:

Holiday.all                        
Holiday Load (0.7ms)  SELECT "holidays".* FROM "holidays"
=> #<ActiveRecord::Relation [#<Holiday id: 1, name: "Dia da Confraternização Universal", holidayable_id: 1, holidayable_type: "Country", date: "2014-01-01", created_at: "2014-11-05 21:38:13", updated_at: "2014-11-05 21:38:13", verified?: false>, #<Holiday id: 2, name: "Natal", holidayable_id: 1, holidayable_type: "Country", date: "2014-12-25", created_at: "2014-11-05 22:02:33", updated_at: "2014-11-05 22:02:33", verified?: false>]> 

我想把这几天的日期分成几个月,所以我最终会得到12个数组(每个月一个)。

1 个答案:

答案 0 :(得分:3)

您要使用的是Enumerable#group_by方法。

  

按块的结果对集合进行分组。返回一个哈希,其中键是块的计算结果,值是集合中与键对应的元素数组。

     

如果没有给出阻止,则返回枚举数。

(1..6).group_by { |i| i%3 }   #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}

例如

["12/25", "01/01", (...)].group_by { |date| date.split("/").first }