Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang pengisihan tatasusunan Javascript_Pengetahuan asas

Penjelasan terperinci tentang pengisihan tatasusunan Javascript_Pengetahuan asas

WBOY
WBOYasal
2016-05-16 16:33:111187semak imbas

Jika anda telah bekerja dengan JavaScript untuk seketika, anda mesti tahu jenis fungsi pengisihan tatasusunan ialah kaedah dalam prototaip tatasusunan, iaitu array.prototype.sort(), sort(compareFunction), di mana compareFunction ialah sebuah. fungsi perbandingan. Mari kita lihat penerangan daripada Mozilla MDN:
Jika compareFunction tidak dibekalkan, elemen diisih dengan menukarnya kepada rentetan dan membandingkan rentetan dalam susunan leksikografik (“kamus” atau “buku telefon,” bukan berangka) Contohnya, “80″ didahulukan sebelum “9″ dalam leksikografi tertib, tetapi dalam isihan angka 9 datang sebelum 80.

Lihat beberapa contoh mudah di bawah:

Salin kod Kod adalah seperti 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 anda lihat daripada contoh di atas, lalainya ialah mengisih mengikut susunan abjad dalam kamus.

Nasib baik, isihan menerima fungsi perbandingan tersuai, seperti dalam contoh berikut:

Salin kod Kod adalah seperti berikut:

function compareFunction(a, b) {
jika( a > b) {
Kembali -1;
}lain jika(a < b) {
Pulangan 1;
}lain {
pulangkan 0;
}
}
//Output ["zuojj", "Benjamin", "1"]
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction));

Selepas menyusun, kami mempunyai soalan lain, bagaimana untuk mengawal susunan menaik dan menurun?

Salin kod Kod adalah seperti berikut:

function compareFunction(bendera) {
bendera = bendera ? bendera : "asc";
kembalikan fungsi(a, b) {
jika( a > b) {
Kembalikan bendera === "desc" ? -1 : 1;
}lain jika(a < b) {
Kembalikan bendera === "desc" 1 : -1;
}lain {
Pulangan 0;
}
};
}
//Output ["1", "Benjamin", "zuojj"]
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction()));
//Output ["zuojj", "Benjamin", "1"]
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction("desc")));

Peraturan pengisihan fungsi perbandingan adalah seperti berikut:
1.Jika ia mengembalikan nombor negatif, a akan diisih ke indeks yang lebih rendah dalam tatasusunan.
2.Jika ia mengembalikan nombor positif, a akan diisih ke indeks yang lebih tinggi.
3.Dan jika ia kembali 0 tiada pengisihan diperlukan.

Mari kita lihat petikan daripada Mozilla MDN:
Tingkah laku kaedah isihan berubah antara JavaScript 1.1 dan JavaScript 1.2.Untuk menerangkan penerangan ini, mari lihat contoh:

Dalam JavaScript 1.1, pada sesetengah platform, kaedah isihan tidak berfungsi pada semua platform untuk JavaScript 1.2.

Dalam JavaScript 1.2, kaedah ini tidak lagi menukar elemen yang tidak ditentukan kepada null sebaliknya ia mengisihnya ke bahagian atas tatasusunan Sila klik di sini untuk mendapatkan butiran.

Salin kod Kod adalah seperti berikut:

var arr = [];
arr[0] = "Semut";
arr[5] = "Zebra";
//Output ["Semut", 5: "Zebra"]
console.log(arr);
//Output 6
console.log(arr.length);
//Menghasilkan "Semut*****Zebra"
console.log(arr.join("*"));
//Isih
var sortArr = arr.sort();
//Output ["Semut", "Zebra"]
console.log(sortArr);
//Output 6
console.log(sortArr.length);
//Menghasilkan "Semut*Zebra****"
console.log(sortArr.join("*"));

Saya harap artikel ini akan membantu anda untuk mempelajari dan memahami kaedah sort() Saya harap anda akan mengkritik dan membetulkan sebarang ketidaksesuaian dalam artikel tersebut.

Pautan rujukan: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

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