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:
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!