Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从哈希数组中获取最近的日期值_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何从哈希数组中获取最近的日期值

Ruby on rails 如何从哈希数组中获取最近的日期值,ruby-on-rails,ruby,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[:da

我有这样一个哈希数组:

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
但我觉得有点多余。有没有更好的方法来实现此行为?

您可以像这样做:

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

你可以这样做:

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


Ruby为您提供
.max
.min
。因此,您总是希望创建新的日期数组并使用ruby的方法:

date_array.min # => Oldest date
date_array.max # => Most recent date
正如sawa的回答所暗示的:
hashes.map{h | h[:date]}.max
很棒。您可以使用
.map
创建新的日期数组,并使用ruby函数
.max
确定最近的日期

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


仅供参考:

Ruby为您提供
.max
.min
。因此,您总是希望创建新的日期数组并使用ruby的方法:

date_array.min # => Oldest date
date_array.max # => Most recent date
正如sawa的回答所暗示的:
hashes.map{h | h[:date]}.max
很棒。您可以使用
.map
创建新的日期数组,并使用ruby函数
.max
确定最近的日期

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

供参考: