Jika Anda telah berada di JavaScript untuk sementara waktu, Anda harus tahu bahwa Sort Fungsi Sortir Array adalah metode dalam prototipe array, yaitu array.prototype.sort (), urutkan (perbandingan fungsi), di mana perbandingan fungsi adalah fungsi perbandingan. Mari kita lihat deskripsi dari Mozilla MDN:
Jika perbandingan tidak disediakan, elemen diurutkan dengan mengubahnya menjadi string dan membandingkan string dalam pesanan leksikografi ("kamus" atau "buku telepon," bukan numerik). Misalnya, "80" datang sebelum "9" dalam urutan leksikografi, tetapi dalam jenis numerik 9 datang sebelum 80.
Berikut adalah beberapa contoh sederhana:
Salinan kode adalah sebagai berikut:
// output [1, 2, 3]
console.log ([3, 2, 1] .sort ());
// output ["a", "b", "c"]
console.log (["c", "b", "a"]. sort ());
// output [1, 2, "a", "b"]
console.log (["b", 2, "a", 1] .sort ());
Seperti yang dapat dilihat dari contoh di atas, default diurutkan dalam urutan alfabet kamus.
Untungnya, Sort menerima fungsi perbandingan khusus, seperti yang ditunjukkan dalam contoh berikut:
Salinan kode adalah sebagai berikut:
Fungsi perbandingan fungsi (a, b) {
if (a> b) {
kembali -1;
} lain jika (a <b) {
kembali 1;
}kalau tidak {
kembali 0;
}
}
// output ["zuojj", "Benjamin", "1"]
console.log (["Benjamin", "1", "zuojj"]. sort (perbandingan fungsi));
Setelah menyortir, kami memiliki pertanyaan lain: bagaimana cara mengendalikan pesanan naik dan turun?
Salinan kode adalah sebagai berikut:
Function CompareFunction (flag) {
Bendera = Bendera? Bendera: "ASC";
fungsi pengembalian (a, b) {
if (a> b) {
Return Flag === "Desc"? -1: 1;
} lain jika (a <b) {
Return Flag === "Desc"? 1: -1;
}kalau tidak {
kembali 0;
}
};
}
// output ["1", "Benjamin", "Zuojj"]
console.log (["Benjamin", "1", "zuojj"]. sort (compareFunction ()));
// output ["zuojj", "Benjamin", "1"]
console.log (["Benjamin", "1", "zuojj"]. sort (compareFunction ("desc"))));
Aturan penyortiran untuk fungsi perbandingan adalah sebagai berikut:
1. Jika mengembalikan angka negatif, A akan diurutkan ke indeks yang lebih rendah dalam array.
2.Jika mengembalikan angka positif, A akan diurutkan ke indeks yang lebih tinggi.
3. dan jika mengembalikan 0 tidak ada penyortiran yang diperlukan.
Mari kita lihat bagian yang dikutip dari Mozilla MDN:
Perilaku metode sortir berubah antara JavaScript 1.1 dan JavaScript 1.2. Untuk menjelaskan deskripsi ini, mari kita lihat contoh:
Dalam JavaScript 1.1, pada beberapa platform, metode sortir tidak berfungsi. Metode ini berfungsi pada semua platform untuk JavaScript 1.2.
Dalam JavaScript 1.2, metode ini tidak lagi mengubah elemen yang tidak ditentukan menjadi nol; Sebaliknya itu mengurutkan mereka ke ujung atas array. Silakan klik di sini untuk detailnya.
Salinan kode adalah sebagai berikut:
var arr = [];
arr [0] = "semut";
arr [5] = "zebra";
// output ["semut", 5: "zebra"]
console.log (arr);
// output 6
console.log (arr.length);
// output "semut ****** zebra"
console.log (arr.join ("*"));
//Menyortir
var sortarr = arr.sort ();
// output ["semut", "zebra"]
console.log (sortarr);
// output 6
console.log (sortarr.length);
// output "semut*zebra ****"
console.log (sortarr.join ("*"));
Saya harap artikel ini akan membantu Anda untuk belajar dan memahami metode Sort (). Saya harap Anda akan mengkritik dan memperbaiki aspek yang tidak pantas dalam artikel.
Tautan referensi: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/array/sort