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

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

DDD
DDDオリジナル
2024-12-25 18:37:10686ブラウズ

How can I sort an array of objects using multiple fields in JavaScript?

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

オブジェクトの配列内の複数のフィールドに基づいて並べ替えが必要な場合、連鎖並べ替えというアプローチを採用することができます。このメソッドでは、ゼロ以外の差が得られるまで、各フィールドの値を順番に比較します。

実装

次のオブジェクトの配列を考えます。

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"}
];

この配列を都市 (昇順) に基づいて並べ替え、次に価格 (降順) に基づいて並べ替えるには、次の並べ替えを使用します。 function:

data.sort(function (a, b) {
    return a.city.localeCompare(b.city) || b.price - a.price;
});

説明

sort 関数は引数としてコールバックを受け取り、2 つのオブジェクト a と b を比較します。要素の順序を決定する値を返します:

  • a.city.localeCompare(b.city) が 0 より小さい場合、a は b の前に配置されます。
  • If a.city.localeCompare(b.city) が 0 より大きい場合、b は a の前に配置されます。
  • 場合a.city.localeCompare(b.city) はゼロに等しく、b.price - a.price は価格の比較に使用されます。正の値は b を a の前に配置し、負の値は a を b の前に配置します。

出力例

ソート後、homes 配列は次のように再配置されます。 :

[{
    "h_id": "3",
    "city": "Dallas",
    "state": "TX",
    "zip": "75201",
    "price": "162500"
},
{
    "h_id": "6",
    "city": "Dallas",
    "state": "TX",
    "zip": "75000",
    "price": "556699"
},
{
    "h_id": "4",
    "city": "Bevery Hills",
    "state": "CA",
    "zip": "90210",
    "price": "319250"
},
{
    "h_id": "5",
    "city": "New York",
    "state": "NY",
    "zip": "00010",
    "price": "962500"
}]

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

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