Rumah >hujung hadapan web >tutorial js >Bagaimanakah saya boleh mengisih pelbagai objek menggunakan berbilang medan dalam JavaScript?

Bagaimanakah saya boleh mengisih pelbagai objek menggunakan berbilang medan dalam JavaScript?

DDD
DDDasal
2024-12-25 18:37:10728semak imbas

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

Isih Berbilang Medan Tatasusunan Objek

Dalam kes di mana pengisihan diperlukan berdasarkan berbilang medan dalam tatasusunan objek, pengisihan berantai pendekatan boleh digunakan. Kaedah ini melibatkan membandingkan nilai setiap medan dalam urutan, sehingga perbezaan bukan sifar diperoleh.

Pelaksanaan

Pertimbangkan tatasusunan objek berikut:

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

Untuk mengisih tatasusunan ini berdasarkan bandar (menaik) dan kemudian harga (menurun), gunakan jenis berikut fungsi:

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

Penjelasan

Fungsi isihan mengambil panggilan balik sebagai hujah, yang membandingkan dua objek a dan b. Ia mengembalikan nilai yang menentukan susunan unsur:

  • Jika a.city.localeCompare(b.city) kurang daripada sifar, a diletakkan sebelum b.
  • Jika a.city.localeCompare(b.city) lebih besar daripada sifar, b diletakkan sebelum a.
  • Jika a.city.localeCompare(b.city) adalah sama dengan sifar, b.price - a.price digunakan untuk membandingkan harga. Nilai positif meletakkan b sebelum a, dan nilai negatif meletakkan a sebelum b.

Contoh Output

Selepas mengisih, tatasusunan rumah disusun semula seperti berikut :

[{
    "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"
}]

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengisih pelbagai objek menggunakan berbilang medan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn