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
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.