Membandingkan Tatasusunan dalam JavaScript
Tatasusunan dalam JavaScript ialah struktur data penting untuk mengatur dan menyimpan koleksi item. Apabila bekerja dengan tatasusunan, selalunya menjadi perlu untuk membandingkannya untuk kesaksamaan atau untuk menentukan sama ada ia mengandungi unsur yang serupa.
Operator == dan JSON.stringify
Secara intuitif , seseorang mungkin berfikir bahawa pengendali kesamaan (==) boleh digunakan untuk membandingkan tatasusunan. Walau bagaimanapun, pengendali ini menyemak kesamaan rujukan, bermakna ia menentukan sama ada dua pembolehubah merujuk kepada objek yang sama dalam ingatan. Tatasusunan disimpan sebagai objek, jadi operator == akan mengembalikan palsu walaupun tatasusunan mengandungi elemen yang sama.
Satu lagi pendekatan biasa ialah menggunakan kaedah JSON.stringify untuk menukar tatasusunan kepada rentetan. Dengan membandingkan rentetan yang terhasil, kesaksamaan boleh ditentukan. Walaupun kaedah ini berfungsi, kaedah ini tidak cekap untuk tatasusunan atau tatasusunan yang lebih besar yang mengandungi objek bersarang.
Fungsi Perbandingan Tatasusunan Tersuai
Pendekatan yang lebih cekap dan fleksibel adalah dengan mencipta tersuai fungsi yang membandingkan elemen tatasusunan dan menyemak kesamaan. Begini cara ia boleh dilaksanakan:
Array.prototype.equals = function (array) { if (!array) { return false; } if (this === array) { return true; } if (this.length != array.length) { return false; } for (let i = 0; i < this.length; i++) { if (this[i] instanceof Array && array[i] instanceof Array) { if (!this[i].equals(array[i])) { return false; } } else if (this[i] != array[i]) { return false; } } return true; };
Fungsi ini mengendalikan tatasusunan bersarang dengan membandingkannya secara rekursif. Ia juga membenarkan perbandingan tatasusunan yang mengandungi objek dengan menyemak nilainya.
Penggunaan
Untuk menggunakan fungsi yang sama, hanya panggilnya pada objek tatasusunan:
[1, 2, [3, 4]].equals([1, 2, [3, 2]]) === false; [1, "2,3"].equals([1, 2, 3]) === false; [1, 2, [3, 4]].equals([1, 2, [3, 4]]) === true; [1, 2, 1, 2].equals([1, 2, 1, 2]) === true;
Membandingkan Objek
Ia penting untuk ambil perhatian bahawa fungsi equals direka untuk membandingkan tatasusunan. Jika anda perlu membandingkan objek, anda memerlukan fungsi perbandingan objek berasingan yang mengendalikan ciri khusus objek.
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Tatasusunan dengan Berkesan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!