Rumah >hujung hadapan web >tutorial js >Mengapa Nilai Pulangan Boolean Tidak Cukup untuk Fungsi Perbandingan Array.sort JavaScript?
Kaedah Array.sort JavaScript membenarkan fungsi perbandingan tersuai untuk menyusun elemen dan soalan biasa timbul: bolehkah fungsi perbandingan mudah mengembalikan boolean mencukupi untuk mengisih? Jawapannya dengan jelas tidak.
Fungsi perbandingan dalam JavaScript harus mematuhi peraturan berikut:
Walau bagaimanapun, mengembalikan boolean tidak menjamin konsistensi. Contohnya, jika compare(a, b) mengembalikan palsu (atau setara, 0), ia membayangkan bahawa a sama ada sama dengan atau lebih kecil daripada b. Ini melanggar sifat transitiviti yang diperlukan untuk menyusun algoritma.
Pertimbangkan fungsi perbandingan ini:
function compare(a, b) { return a > b; }<p>Ia mengembalikan boolean: benar jika a lebih besar daripada b, dan palsu sebaliknya.</p> <p>Menggunakan fungsi ini mengikut urutan, kami mempunyai:</p> <pre class="brush:php;toolbar:false">[0, 1, 0].sort(compare); // [0, 1, 0] or [1, 0, 0] (varies between implementations) [1, 1, 0, 2].sort(compare); // [0, 1, 2, 1] or [1, 1, 0, 2] (varies between implementations)
Hasilnya tidak konsisten kerana fungsi perbandingan tidak menguatkuasakan transitiviti.
Untuk memastikan pengisihan yang konsisten, gunakan fungsi perbandingan yang mengembalikan nilai angka yang betul:
Dengan mengikut garis panduan ini, anda boleh memastikan gelagat pengisihan yang boleh dipercayai dan boleh diramal dalam kod JavaScript anda.
Atas ialah kandungan terperinci Mengapa Nilai Pulangan Boolean Tidak Cukup untuk Fungsi Perbandingan Array.sort JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!