Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Membandingkan Tatasusunan dan Objek dengan Cekap dalam JavaScript?

Bagaimana untuk Membandingkan Tatasusunan dan Objek dengan Cekap dalam JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-12-30 22:11:17
asal
273 orang telah melayarinya

How to Efficiently Compare Arrays and Objects in JavaScript?

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;
};
Salin selepas log masuk

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;
Salin selepas log masuk

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;
};
Salin selepas log masuk

2. Penggunaan:

({ a: 1, foo: "bar", numberOfTheBeast: 666 }).equals({
  a: 1,
  foo: "bar",
  numberOfTheBeast: 666,
}) === false;
Salin selepas log masuk

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!

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