日付プロパティによるオブジェクト配列の並べ替え
問題: 日付プロパティを持つオブジェクトの配列があり、に最も近い日付に基づいて降順に並べ替えます。 present.
解決策:
カスタム コンパレータの使用:
1 つの方法は、組み込みの sort( ) メソッドとカスタム コンパレータ関数を組み合わせます。コンパレータ関数は 2 つのオブジェクト a と b を引数として受け取り、a が b の前、b の後に来る場合、または同じ位置に留まる場合、それぞれ負の値、正の値、またはゼロの値を返します。
日付で並べ替える場合、コンパレータ関数は日付文字列を JavaScript 日付に変換し、それらを減算します。
array.sort(function(a, b) { return new Date(b.date) - new Date(a.date); });
Generic解決策:
より一般的な解決策は、配列に対してシュワルツ変換を実行するカスタム sortBy() 関数を定義することです。この関数を使用すると、日付だけでなく、任意のプロパティで並べ替えることができます。
(function() { if (!Array.prototype.sortBy) Array.prototype.sortBy = sb; function sb(f) { // ... implementation } })();
このカスタム関数を使用すると、次のように日付プロパティで並べ替えることができます:
array.sortBy(function(o) { return o.date });
複雑な日付比較の処理:
日付プロパティが直接比較できない場合は、比較可能な値を抽出できます。 JavaScript Date オブジェクトなどから、
array.sortBy(function(o) { return new Date(o.date) });
複数の基準による並べ替え:
また、sortBy() 関数を使用して複数の基準で並べ替えることもできます。 。コンパレータ関数から値の配列を返すだけです:
// Sort by date, then score (reversed), then name array.sortBy(function(o) { return [o.date, -o.score, o.name] });
以上がJavaScript でオブジェクトの配列を日付で降順に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。