如何从哈希数组中获取最新的日期值

时间:2016-02-26 03:34:16

标签: ruby-on-rails ruby

我有一系列像这样的哈希:

hashes = [{date: Date.today, value: 1},
          {date: Date.today - 1.day, value: 2},
          {date: Date.today - 2.day, value: 3},
          {date: Date.today + 1.day, value: 4}
]

我想得到最近的约会。我可以通过:

hashes.sort{|i| i[:date]}.first[:date]
# => Sat, 27 Feb 2016

但我觉得这有点多余。有没有更好的方法来实现这种行为?

2 个答案:

答案 0 :(得分:5)

你可以这样做:

hashes.max_by{|h| h[:date]}[:date]

hashes.map{|h| h[:date]}.max

答案 1 :(得分:0)

Ruby为您提供.max.min。所以你总是想创建新的日期数组并使用ruby的方法:

date_array.min # => Oldest date
date_array.max # => Most recent date

萨瓦的回答表明:hashes.map{|h| h[:date]}.max很棒。您可以使用.map创建新的日期数组,并使用ruby函数.max来确定最近的日期。

我看到你正在尝试使用sort方法,但我建议你不要这样做,因为当你只需要元素来查看计算值是最大还是最小时,sort会有点浪费。

仅供参考:http://ruby-doc.org/core-2.3.0/Enumerable.html#method-i-max_by