ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の Date プロパティでオブジェクトの配列を並べ替えるにはどうすればよいですか?

JavaScript の Date プロパティでオブジェクトの配列を並べ替えるにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-21 08:01:09999ブラウズ

How to Sort an Array of Objects by Date Property in JavaScript?

日付プロパティによるオブジェクト配列の並べ替え

日付プロパティによってオブジェクトの配列を並べ替えるには、JavaScript の sort() 関数を利用できます。カスタムコンパレータと組み合わせて使用​​します。このプロセスには、日付値を比較し、その順序に基づいて負の値、正の値、またはゼロの値を返すことが含まれます。

簡単な答え:

array.sort(function(a, b) {
  return new Date(b.date) - new Date(a.date);
});

このコンパレータは、両方の日付の date オブジェクトを取得し、その値を減算します。負の値は a が b よりも現在の日付に近いことを示し、正の値は b が近いことを意味し、ゼロは等しいことを示します。

一般的な答え:

array.sort(function(o1, o2) {
  if (sort_o1_before_o2) return -1;
  else if (sort_o1_after_o2) return 1;
  else return 0;
});

このより一般的なアプローチでは、o1 の前後でソートするための個別の条件を定義することで、ソート順序をカスタム決定できます。 o2.

強力な答え:

強力な解決策は、すべての配列でシュワルツ変換を使用して列挙不可能なカスタムの sortBy 関数を定義することです:

(function() {
  if (typeof Object.defineProperty === 'function') {
    try {
      Object.defineProperty(Array.prototype, 'sortBy', { value: sb });
    } catch (e) {}
  }
  if (!Array.prototype.sortBy) Array.prototype.sortBy = sb;

  function sb(f) {
    for (var i = this.length; i;) {
      var o = this[--i];
      this[i] = [].concat(f.call(o, o, i), o);
    }
    this.sort(function(a, b) {
      for (var i = 0, len = a.length; i < len; ++i) {
        if (a[i] != b[i]) return a[i] < b[i] ? -1 : 1;
      }
      return 0;
    });
    for (var i = this.length; i;) {
      this[--i] = this[i][this[i].length - 1];
    }
    return this;
  }
})();

これにより、簡潔かつ強力なメッセージが可能になります。 sorting:

array.sortBy(function(o) { return o.date });

コンパレータ関数で値の配列を返すことにより、このアプローチを拡張して、並べ替えプロセスで複数の条件を処理することもできます。

以上がJavaScript の Date プロパティでオブジェクトの配列を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。