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
Lepaskan: 2024-12-25 18:37:10
asal
693 orang telah melayarinya

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"}
];
Salin selepas log masuk

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;
});
Salin selepas log masuk

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"
}]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan