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

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

これから元の質問複数のフィールドに並べ替えを適用するにはどうすればよいでしょうか?

このわずかに変更された構造を使用して、都市 (昇順) と価格 (降順) をどのように並べ替えるのでしょうか?

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

私はその事実を答え一般的なアプローチを提供するものが提供されました。このコードを使用する予定の場所で、日付やその他のものを並べ替える必要があります。オブジェクトを「準備」する機能は、少し面倒ではありますが、便利に思えました。

私はこれを作ってみました答え良い一般的な例にしようとしましたが、あまりうまくいきませんでした。

ベストアンサー1

ゼロ以外の値に達するまで値の差分を取ることで、連鎖ソート手法を使用できます。

var data = [{ 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" }];

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

console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }

または、es6 を使用する場合は、次のようにします。

data.sort((a, b) => a.city.localeCompare(b.city) || b.price - a.price);

おすすめ記事