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

JavaScript でオブジェクトの配列を複数のフィールドで並べ替えるにはどうすればよいですか?

DDD
リリース: 2024-12-17 05:53:24
オリジナル
369 人が閲覧しました

How Can I Sort an Array of Objects by Multiple Fields in JavaScript?

複数のフィールドによるオブジェクトの配列の並べ替え

元の質問では、単一のフィールドによるオブジェクトの配列の並べ替えは効率的に解決されました。しかし、複数のフィールドに並べ替えを適用するにはどうすればよいでしょうか?

オブジェクトの配列を複数のフィールドで並べ替えるには、連鎖並べ替えアプローチを使用できます。これには、最初のフィールドによる並べ替えが含まれ、値が等しい場合は 2 番目のフィールドによる並べ替えが続けられます。必要に応じて、このプロセスをさらに多くのフィールドに対して繰り返すことができます。

次の例では、住宅の配列を都市 (昇順) で並べ替え、次に価格 (降順) で並べ替えたいとします。

var homes = [
    {"h_id":"3",
     "city":"Dallas",
     "state":"TX",
     "zip":"75201",
     "price":"162500"},
    {"h_id":"4",
     "city":"Bevery Hills",
     "state":"CA",
     "zip":"90210",
     "price":"319250"},
    {"h_id":"6",
     "city":"Dallas",
     "state":"TX",
     "zip":"75000",
     "price":"556699"},
    {"h_id":"5",
     "city":"New York",
     "state":"NY",
     "zip":"00010",
     "price":"962500"}
    ];
ログイン後にコピー

この配列を並べ替えるには、次の JavaScript コードを使用できます:

homes.sort(function (a, b) {
    return a.city.localeCompare(b.city) || b.price - a.price;
});
ログイン後にコピー

このコードの使い方は次のとおりです。 works:

  1. sort 関数は引数として比較関数を取ります。この関数は、配列内の 2 つの要素を比較します。
  2. 比較関数では、まず 2 つの家の都市を比較します。それらが等しい場合は、価格の比較に進みます。
  3. localeCompare 関数は 2 つの文字列を比較し、ブラウザのロケールを考慮します。これにより、異なるロケール間でソートの一貫性が確保されます。
  4. ||演算子は論理 OR 演算を実行するために使用されます。都市の比較でゼロ以外の値が返された場合は、2 つの住宅の都市が異なるため、都市の比較を並べ替えに使用する必要があることを意味します。それ以外の場合は、価格比較が使用されます。
  5. 価格比較で負の値が返された場合、最初の家の価格が 2 番目の家の価格よりも低いことを意味します。正の値が返された場合、最初の家の価格は 2 番目の家の価格よりも高くなります。並べ替えアルゴリズムは、この値を使用してホームの順序を決定します。

この並べ替えアプローチを複数のフィールドに適用することで、オブジェクトの複雑な配列を目的の順序で簡単に並べ替えることができます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート