Artikel ini menjelaskan bagaimana JS menggunakan array.prototype.sort () untuk mengurutkan objek array. Bagikan untuk referensi Anda. Analisis spesifiknya adalah sebagai berikut:
Saat berbicara tentang penyortiran objek array, mari kita pahami secara singkat array.prototype.sort (). Metode sortir menerima parameter - fungsi. Fungsi ini akan memberikan dua parameter, masing -masing, dua elemen yang dibandingkan. Jika elemennya string, itu akan dibandingkan melalui kode unicode. Jika angka, ukuran nilainya dibandingkan. Jika 1 dikembalikan dalam fungsi dibandingkan, dua elemen akan ditukar, dan 0 dan -1 tidak akan dipertukarkan. Mari kita lihat contoh:
Salinan kode adalah sebagai berikut: var arr = [3, 5, 2, 1];
// menyortir dari kecil ke besar
arr.sort (function (a, b) {
mengembalikan A> B? 1: -1;
});
// Hasilnya adalah: [1, 2, 3, 5]
Jadi kembali ke topik kita, bagaimana saya harus menulisnya jika saya mengurutkan objek array? Faktanya, prinsipnya sama seperti di atas, seperti:
Salin kode sebagai berikut: var arr = [
{A: 2, B: 3.2},
{A: 3, b: 1.2},
{A: 4, b: 2.2},
{A: 6, b: 1.2},
{A: 5, B: 3.2}
]
/// diurutkan berdasarkan atribut B dari kecil ke besar
arr.sort (function (x, y) {
mengembalikan xb> yb? 1: -1;
});
X dan Y adalah elemen ARR, yaitu objek, sehingga Anda dapat secara langsung membandingkan properti dari dua objek.
Dalam contoh di atas, ada duplikasi di elemen terkecil. Jika persyaratannya adalah: Sortir pertama dari kecil ke besar sesuai dengan atribut B, dan jika ada duplikasi yang terkecil, maka urutkan berdasarkan atribut A, bagaimana saya harus menulisnya?
Saat menyortir, pertama -tama urutkan berdasarkan atribut B. Jika XB lebih besar dari YB, pindahkan x ke kanan y. Jika XB sama dengan YB, maka bandingkan dengan XA dan YA. Oleh karena itu, kodenya adalah sebagai berikut:
Salin kode sebagai berikut: arr.sort (function (x, y) {
if (xb> yb) {
kembali 1;
} lain jika (xb === yb) {
mengembalikan xa> ya? 1: -1;
} lain jika (xb <yb) {
kembali -1;
}
})
Saya harap artikel ini akan membantu pemrograman JavaScript semua orang.