Objekte in JavaScript vergleichen

Ammar Ali 12 Oktober 2023
  1. Vergleichen Objekte mit der Funktion JSON.stringify() in JavaScript
  2. Objekte manuell in JavaScript vergleichen
Objekte in JavaScript vergleichen

In diesem Tutorial wird erläutert, wie Sie Objekte manuell oder mithilfe der Funktion JSON.stringify() in JavaScript vergleichen.

Vergleichen Objekte mit der Funktion JSON.stringify() in JavaScript

Der Vergleich von Variablen in JavaScript ist relativ einfach; wir müssen nur den Vergleichsoperator === zwischen zwei Variablen verwenden. Die Variablen können jeden Datentyp haben, wie Strings und Integer.

Der Vergleichsoperator gibt einen booleschen Wert zurück, der je nach zu vergleichenden Variablen true oder false sein kann. Vergleichen wir beispielsweise zwei Variablen eines String-Typs mit dem Vergleichsoperator.

Siehe den Code unten.

var a = 'Apple';
var b = 'Apple';
console.log(a === b)

Ausgabe:

true

In der Ausgabe zeigt der boolesche Wert true an, dass die beiden Variablen identisch sind. Ebenso können Sie auch Zahlen vergleichen. Kommen wir nun zum Vergleich von Objekten in JavaScript.

Der Vergleich von Objekten ist nicht einfach, da sie mehrere Werte enthalten und auch Objekte darin enthalten können. Die schnelle und einfache Methode zwei Objekte zu vergleichen ist die Funktion JASON.stringify(). Der Nachteil dieser Methode ist, dass die Reihenfolge der Eigenschaften im Vergleich wichtig ist.

Diese Funktion vergleicht die erste Eigenschaft eines Objekts mit der ersten Eigenschaft des anderen Objekts usw. Wenn wir die Reihenfolge der Eigenschaften in einem der Objekte ändern, funktioniert diese Methode nicht. Vergleichen wir zum Beispiel zwei Objekte mit der Funktion JSON.strigify().

Siehe den Code unten.

const fruit1 = {
  name: 'Apple',
  price: '2'
};
const fruit2 = {
  name: 'Apple',
  price: '2'
};
console.log(JSON.stringify(fruit1) === JSON.stringify(fruit2))

Ausgabe:

true

In diesem Code vergleichen wir zwei Objekte, die jeweils zwei Eigenschaften enthalten. Aus der Ausgabe sind die beiden Objekte gleich. Ändern wir nun die Reihenfolge der beiden Eigenschaften in einem Objekt und vergleichen sie dann mit der Funktion JSON.stringify() mit dem anderen.

Siehe den Code unten.

const fruit1 = {
  name: 'Apple',
  price: '2'
};
const fruit2 = {
  price: '2',
  name: 'Apple'
};
console.log(JSON.stringify(fruit1) === JSON.stringify(fruit2))

Ausgabe:

false

In der Ausgabe ist das Ergebnis false. Wir haben die Reihenfolge der Eigenschaften des zweiten Objekts geändert; Dies ist der Nachteil dieser Methode.

Objekte manuell in JavaScript vergleichen

Die obige Methode hat einen Nachteil, sodass wir unsere eigene Funktion zum Vergleichen zweier Objekte erstellen können, sodass wir uns nicht um die Reihenfolge der Eigenschaften der Objekte kümmern müssen.

Lassen Sie uns zum Beispiel eine Funktion zum Vergleichen der obigen Objekte in JavaScript erstellen. Siehe den Code unten.

function ObjCompare(obj1, obj2) {
  if (obj1.name === obj2.name && obj1.price === obj2.price) {
    return true;
  };
  return false;
}
const fruit1 = {
  name: 'Apple',
  price: '2'
};
const fruit2 = {
  price: '2',
  name: 'Apple'
};
console.log(ObjCompare(fruit1, fruit2))

Ausgabe:

true

Im obigen Code haben wir die Funktion ObjCompare() erstellt, die zwei Objekte unabhängig von ihrer Reihenfolge nach ihren Eigenschaften vergleicht. Die Funktion gibt nur true zurück, wenn Name und Preis der beiden Objekte gleich sind; andernfalls wird false zurückgegeben.

Sie können auch Ihre eigene Funktion erstellen, um mehrere Eigenschaften zu vergleichen oder eine Eigenschaft, die Sie vergleichen möchten, aus allen verfügbaren Eigenschaften zu vergleichen. Sie können auch eine andere Funktion erstellen, um mehr als zwei Objekte gleichzeitig zu vergleichen.

Nehmen wir nun an, wir haben zwei Objekte mit vielen Eigenschaften und möchten alle diese Eigenschaften vergleichen. Die Erstellung dieser Art von Funktion wird viel Zeit in Anspruch nehmen.

Stattdessen können wir die Funktion Object.keys() verwenden, um alle Schlüssel oder Eigenschaften einer Funktion zu erhalten und diese mit einer Schleife zu vergleichen. Wenn alle Eigenschaften gleich sind, gibt die Funktion true zurück; andernfalls wird false zurückgegeben.

Lassen Sie uns zum Beispiel diese Funktion erstellen und mit den beiden obigen Objekten testen. Siehe den Code unten.

function ObjCompare(obj1, obj2) {
  const Obj1_keys = Object.keys(obj1);
  const Obj2_keys = Object.keys(obj2);
  if (Obj1_keys.length !== Obj2_keys.length) {
    return false;
  }
  for (let k of Obj1_keys) {
    if (obj1[k] !== obj2[k]) {
      return false;
    }
  }
  return true;
}
const fruit1 = {
  name: 'Apple',
  price: '2',
  color: 'red'
};
const fruit2 = {
  price: '2',
  name: 'Apple',
  color: 'red'
};
console.log(ObjCompare(fruit1, fruit2))

Ausgabe:

true

In diesem Programm wird die erste if-Anweisung innerhalb der Funktion ObjCompare() verwendet, um die Länge von Eigenschaften oder Schlüsseln innerhalb der beiden Objekte zu überprüfen.

Wenn sie nicht gleich sind, gibt die Funktion false zurück und geht nicht in die Schleife über. Diese Methode funktioniert auch dann gut, wenn wir die Reihenfolge der Eigenschaften oder die Schlüssel eines der Objekte ändern. Sie können diese Funktion auch ändern, um drei oder mehr Objekte gleichzeitig zu vergleichen.

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Verwandter Artikel - JavaScript Object

Verwandter Artikel - JavaScript Boolean