Rumah >hujung hadapan web >tutorial js >Mengapa `==` Tidak Berfungsi untuk Membandingkan Tatasusunan dalam JavaScript?
Mengapa Semakan Kesamaan Gagal untuk Tatasusunan
Dalam JavaScript, semakan kesamaan (==) antara tatasusunan mengembalikan palsu, walaupun apabila tatasusunan kelihatan seperti mengandungi unsur-unsur yang sama. Tingkah laku ini bercanggah dengan jangkaan intuitif tentang kesaksamaan nilai.
Memahami Sifat Tatasusunan
Tatasusunan JavaScript bukanlah jenis data primitif tetapi objek. Apabila membandingkan dua tatasusunan menggunakan ==, pengendali menyemak sama ada kedua-dua tatasusunan adalah contoh yang sama, bukan jika kandungannya sama.
Cara Membandingkan Kandungan Tatasusunan
Untuk menentukan sama ada dua tatasusunan mempunyai kandungan yang sama, anda perlu membandingkan secara eksplisit setiap elemen yang sepadan. Berikut ialah fungsi mudah untuk melakukan ini:
function arraysEqual(arr1, arr2) { if (arr1.length != arr2.length) { return false; } for (let i = 0; i < arr1.length; i++) { if (arr1[i] != arr2[i]) { return false; } } return true; }
JSON.stringify() Fallacy
Sesetengah mencadangkan menggunakan JSON.stringify() untuk menukar kedua-dua tatasusunan kepada rentetan JSON dan kemudian bandingkan rentetan. Walaupun ini mungkin berfungsi dalam senario tertentu, ini bukan penyelesaian yang boleh dipercayai. JSON.stringify() mengekalkan susunan harta objek dalam rentetan yang terhasil, yang mungkin berbeza-beza bergantung pada butiran pelaksanaan. Ketidakkonsistenan ini boleh membawa kepada negatif palsu dalam semakan kesaksamaan.
Amalan Terbaik
Untuk perbandingan kandungan tatasusunan yang boleh dipercayai, adalah disyorkan untuk menulis fungsi tersuai yang berulang pada semua elemen dan secara eksplisit menyemak kesaksamaan. Pendekatan ini memastikan ketepatan dan keteguhan dalam membandingkan tatasusunan.
Atas ialah kandungan terperinci Mengapa `==` Tidak Berfungsi untuk Membandingkan Tatasusunan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!