Membandingkan Tatasusunan dalam JavaScript dengan cekap
Pengenalan
Membandingkan tatasusunan dalam JavaScript boleh menjadi rumit. Operator perbandingan (==) tidak berfungsi seperti yang diharapkan dan menukar tatasusunan kepada JSON untuk perbandingan boleh menjadi tidak cekap. Berikut ialah panduan komprehensif untuk membandingkan tatasusunan dengan cekap:
Membandingkan Tatasusunan
Untuk melakukan perbandingan tatasusunan yang cekap, ikuti langkah berikut:
1 . Kaedah Custom Equals:
Tentukan kaedah tersuai pada Array.prototype dipanggil equals. Kaedah ini akan membandingkan secara rekursif setiap elemen tatasusunan.
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; };
2. Penggunaan:
Untuk membandingkan dua tatasusunan menggunakan kaedah sama, hanya panggilnya pada salah satu daripadanya seperti:
[1, 2, [3, 4]].equals([1, 2, [3, 2]]) === false;
Membandingkan Objek
Membandingkan sebahagian objek boleh dilakukan, tetapi anda perlu sedar bahawa dua contoh objek tidak akan sama walaupun ia mengandungi perkara yang sama data.
1. Kaedah Custom Equals untuk Objek:
Object.prototype.equals = function (object2) { for (let propName in this) { if ( this.hasOwnProperty(propName) !== object2.hasOwnProperty(propName) ) { return false; } else if ( typeof this[propName] !== typeof object2[propName] ) { return false; } } for (let propName in object2) { if ( this.hasOwnProperty(propName) !== object2.hasOwnProperty(propName) ) { return false; } else if ( typeof this[propName] !== typeof object2[propName] ) { return false; } if (!this.hasOwnProperty(propName)) continue; if ( this[propName] instanceof Array && object2[propName] instanceof Array ) { if (!this[propName].equals(object2[propName])) return false; } else if ( this[propName] instanceof Object && object2[propName] instanceof Object ) { if (!this[propName].equals(object2[propName])) return false; } else if (this[propName] !== object2[propName]) { return false; } } return true; };
2. Penggunaan:
({ a: 1, foo: "bar", numberOfTheBeast: 666 }).equals({ a: 1, foo: "bar", numberOfTheBeast: 666, }) === false;
Array Bersarang dengan indexOf dan mengandungi
Untuk kes yang lebih kompleks melibatkan tatasusunan bersarang, anda boleh menggunakan indexOf dan mengandungi fungsi untuk mencari untuk objek tertentu dalam bersarang tatasusunan.
Kesimpulan
Dengan mengikuti teknik ini, anda boleh membandingkan tatasusunan dan objek dengan cekap dalam JavaScript, menangani perangkap biasa dan membolehkan anda melakukan perbandingan sedemikian dengan yakin.
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Tatasusunan dan Objek dengan Cekap dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!