Heim > Web-Frontend > js-Tutorial > Wie vergleiche ich Arrays und Objekte in JavaScript effizient?

Wie vergleiche ich Arrays und Objekte in JavaScript effizient?

Mary-Kate Olsen
Freigeben: 2024-12-30 22:11:17
Original
273 Leute haben es durchsucht

How to Efficiently Compare Arrays and Objects in JavaScript?

Arrays in JavaScript effizient vergleichen

Einführung

Arrays in JavaScript zu vergleichen kann schwierig sein. Der Vergleichsoperator (==) funktioniert nicht wie erwartet und die Konvertierung von Arrays in JSON zum Vergleich kann ineffizient sein. Hier ist eine umfassende Anleitung zum effizienten Vergleichen von Arrays:

Vergleichen von Arrays

Um einen effizienten Array-Vergleich durchzuführen, befolgen Sie diese Schritte:

1 . Benutzerdefinierte Equals-Methode:

Definieren Sie eine benutzerdefinierte Methode für den Array.prototype mit dem Namen „equals“. Diese Methode vergleicht jedes Element der Arrays rekursiv.

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;
};
Nach dem Login kopieren

2. Verwendung:

Um zwei Arrays mit der Methode „equals“ zu vergleichen, rufen Sie sie einfach auf einem von ihnen auf wie:

[1, 2, [3, 4]].equals([1, 2, [3, 2]]) === false;
Nach dem Login kopieren

Objekte vergleichen

Ein teilweiser Vergleich von Objekten ist möglich, Sie müssen sich jedoch darüber im Klaren sein, dass zwei Objektinstanzen niemals gleich sind, selbst wenn sie dasselbe enthalten Daten.

1. Benutzerdefinierte Gleichheitsmethode für Objekte:

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;
};
Nach dem Login kopieren

2. Verwendung:

({ a: 1, foo: "bar", numberOfTheBeast: 666 }).equals({
  a: 1,
  foo: "bar",
  numberOfTheBeast: 666,
}) === false;
Nach dem Login kopieren

Verschachtelte Arrays mit indexOf und enthält

Für komplexere Fälle mit verschachtelten Arrays können Sie die Funktionen indexOf und enthält zum Suchen verwenden für bestimmte Objekte innerhalb verschachtelter Objekte Arrays.

Fazit

Durch die Befolgung dieser Techniken können Sie Arrays und Objekte in JavaScript effizient vergleichen, häufige Fallstricke beseitigen und solche Vergleiche sicher durchführen.

Das obige ist der detaillierte Inhalt vonWie vergleiche ich Arrays und Objekte in JavaScript effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage