Rumah >hujung hadapan web >tutorial js >Contoh penggunaan petua Sort_javascript JavaScript yang salah

Contoh penggunaan petua Sort_javascript JavaScript yang salah

WBOY
WBOYasal
2016-05-16 16:08:341084semak imbas

Masalah yang sangat ajaib berlaku dalam kod rakan sekerja tidak lama dahulu Proses umum adalah untuk mengisih tatasusunan yang terdiri daripada objek. Atribut a digunakan untuk mengisih, dan atribut b digunakan sebagai syarat pilihan sama dengan 1 Walau apa pun nilai a, ia didahulukan. Ini adalah soalan yang sangat mudah, tetapi masalahnya ialah dia menggunakan isihan dua kali untuk melaksanakan pengisihan kali ini, mula-mula menyusun mengikut atribut a, dan kemudian mengisih mengikut nilai b. Masalahnya terletak pada jenis kedua.

Kami mengambil mudah bahawa dalam pengisihan pertama, tatasusunan telah diisih dari besar ke kecil mengikut sifat-sifat a dalam kaedah untuk mengembalikan 0 atau -1), hanya pertimbangkan untuk membawa elemen dengan b sama dengan 1 ke hadapan. Tetapi sebenarnya, ini berkaitan dengan algoritma pengisihan yang dipilih oleh bahasa Kaedah isihan terbina dalam JavaScript (dan bahasa lain) menggunakan koleksi beberapa algoritma pengisihan, dan kadangkala ia tidak menjamin bahawa kedudukan elemen yang sama. adalah konsisten.

Berikut ialah contoh yang ditemui daripada stackoverflow

Salin kod Kod adalah seperti berikut:

var arrayToSort = [
{nama: 'a', kekuatan: 1}, {nama: 'b', kekuatan: 1}, {nama: 'c', kekuatan: 1}, {nama: 'd', kekuatan: 1},
{nama: 'e', ​​​​kekuatan: 1}, {nama: 'f', kekuatan: 1}, {nama: 'g', kekuatan: 1}, {nama: 'h', kekuatan: 1},
{nama: 'i', kekuatan: 1}, {nama: 'j', kekuatan: 1}, {nama: 'k', kekuatan: 1}, {nama: 'l', kekuatan: 1},
{nama: 'm', kekuatan: 1}, {nama: 'n', kekuatan: 1}, {nama: 'o', kekuatan: 1}, {nama: 'p', kekuatan: 1},
{nama: 'q', kekuatan: 1}, {nama: 'r', kekuatan: 1}, {nama: 's', kekuatan: 1}, {nama: 't', kekuatan: 1}
];

arrayToSort.sort(fungsi (a, b) {
Kembali b.kekuatan - a.kekuatan;
});

arrayToSort.forEach(fungsi (elemen) {
console.log(element.name);
});

Kami akan berpendapat bahawa nilai elemen terakhir masih dari a hingga t, tetapi hasil larian sebenar tidak teratur Ini kerana algoritma isihan tidak mengekalkan susunan tatasusunan asal, yang tidak stabil.

Maka kita harus cuba sedaya upaya untuk mengelakkan situasi ini daripada berlaku. Mengambil contoh rakan sekerja saya, ia sepatutnya menjadi cara yang boleh dilaksanakan untuk menggabungkan logik dua jenis menjadi satu logik tatasusunan asal Susunan direkodkan dalam atribut elemen.

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