7

Rails には ActiveRecord にソート メソッドが組み込まれていることは知っていますが、単純な古い ruby​​ スクリプトを書いているだけで、配列のレコードを日付でソートしたいと考えています。

日付は、多次元配列のセルの 1 つに格納されます。

これにアプローチするための最良の方法はsort_by_dateASCですかDESC?

method を使用する必要はありませんがsort_by_date、コレクションのメソッドを簡単に呼び出して、必要な結果を取得できるようにしたいと考えています。

考え?

4

5 に答える 5

15
def sort_by_date(dates, direction="ASC")
  sorted = dates.sort
  sorted.reverse! if direction == "DESC"
  sorted
end
于 2012-05-25T14:53:16.797 に答える
14

このようなもの?

  class Array
    def sort_by_date(direction="ASC")
      if direction == "ASC"
        self.sort
      elsif direction == "DESC"
        self.sort {|a,b| b <=> a}
      else
        raise "Invalid direction. Specify either ASC or DESC."    
      end
    end
  end

多次元配列は単なる配列の配列であるため、並べ替えたい「次元」でこのメソッドを呼び出します。

于 2012-05-25T14:31:55.090 に答える
5

以下は Date オブジェクトでは機能しない可能性がありますが、DateTime オブジェクトでは機能するはずです。これは、DateTime オブジェクトを整数に変換できるためです。

最近、DateTime オブジェクトを降順で並べ替える必要がありましたが、これが思いつきました。

def sort_by_datetime(dates, direction="ASC")
  dates.sort_by { |date| direction == "DESC" ? -date.to_i : date }
end
于 2014-06-05T17:11:23.500 に答える