Heim >Web-Frontend >js-Tutorial >Wie vergleiche ich Arrays und Objekte in JavaScript effizient?
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; };
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;
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; };
2. Verwendung:
({ a: 1, foo: "bar", numberOfTheBeast: 666 }).equals({ a: 1, foo: "bar", numberOfTheBeast: 666, }) === false;
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!