Mengapa `==` Tidak Berfungsi untuk Membandingkan Tatasusunan dalam JavaScript?

Patricia Arquette
Lepaskan: 2024-11-10 16:39:03
asal
413 orang telah melayarinya

Why Doesn't `==` Work for Comparing Arrays in 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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan