Bei der täglichen Programmierarbeit ist die Beurteilung, ob zwei JSONs gleich sind, ein sehr häufiges Problem. In JavaScript können wir feststellen, ob zwei JSONs gleich sind, indem wir Eigenschaftswerte in den JSON-Objekten vergleichen. In diesem Artikel werden verschiedene Möglichkeiten erläutert, um festzustellen, ob zwei JSONs in JavaScript gleich sind, einschließlich tiefer und flacher Vergleiche.
1. Flacher Vergleich
Der flache Vergleich ist eine relativ einfache Methode, die normalerweise verwendet wird, um festzustellen, ob die Attribute zweier JSON-Objekte gleich sind. Flache Vergleiche vergleichen nur die Eigenschaften der obersten Ebene eines JSON-Objekts und vergleichen nicht rekursiv die verschachtelten Eigenschaften der Objekte.
Das Folgende ist ein Beispielcode, der eine flache Vergleichsmethode verwendet, um zu bestimmen, ob zwei JSONs gleich sind:
function shallowEqual(obj1, obj2) { const keys1 = Object.keys(obj1); const keys2 = Object.keys(obj2); if (keys1.length !== keys2.length) { return false; } for (let i = 0; i < keys1.length; i++) { const key = keys1[i]; if (obj1[key] !== obj2[key]) { return false; } } return true; } const obj1 = { a: 1, b: "hello", c: true }; const obj2 = { a: 1, b: "world", c: true }; console.log(shallowEqual(obj1, obj2)); // false console.log(shallowEqual(obj1, obj1)); // true
Im obigen Beispielcode definieren wir eine Funktion namens „shallowEqual“, die zwei Parameter obj1 und obj2 akzeptiert, die zum Vergleichen verwendet werden, ob Die beiden JSONs sind gleich. Die Funktion verwendet zunächst die Methode Object.keys(), um die Attributnamenlisten von obj1 und obj2 abzurufen, und vergleicht dann die beiden Listen auf Gleichheit. Wenn nicht gleich, gibt die Funktion „false“ zurück, andernfalls iteriert sie durch jedes Attribut von obj1 und vergleicht, ob sein Wert gleich dem Wert des entsprechenden Attributs in obj2 ist. Wenn einer der Werte nicht gleich ist, gibt die Funktion „false“ zurück, andernfalls gibt sie „true“ zurück.
2. Tiefenvergleich
Tiefenvergleich ist eine komplexere Methode, mit der verglichen wird, ob alle Attribute zweier JSON-Objekte gleich sind, einschließlich der verschachtelten Attribute der Objekte. Bei Verwendung der Tiefenvergleichsmethode müssen wir alle Eigenschaften des JSON-Objekts rekursiv durchlaufen und vergleichen, ob ihre Werte gleich sind.
Das Folgende ist ein Beispielcode, der die Tiefenvergleichsmethode verwendet, um zu bestimmen, ob zwei JSONs gleich sind:
function deepEqual(obj1, obj2) { if (obj1 === obj2) { return true; } if (typeof obj1 !== typeof obj2) { return false; } if (Array.isArray(obj1) !== Array.isArray(obj2)) { return false; } if (typeof obj1 === "object" && obj1 !== null && obj2 !== null) { const keys1 = Object.keys(obj1); const keys2 = Object.keys(obj2); if (keys1.length !== keys2.length) { return false; } for (const key of keys1) { if (!obj2.hasOwnProperty(key)) { return false; } if (!deepEqual(obj1[key], obj2[key])) { return false; } } return true; } return obj1 === obj2; } const obj1 = { a: 1, b: ["foo", "bar"], c: { d: true } }; const obj2 = { a: 1, b: ["foo", "bar"], c: { d: true } }; const obj3 = { a: 1, b: ["foo", "bar"], c: { d: false } }; console.log(deepEqual(obj1, obj2)); // true console.log(deepEqual(obj1, obj3)); // false
Im obigen Beispielcode definieren wir eine Funktion namens deepEqual, die zwei Parameter obj1 und obj2 akzeptiert. Wird zum Vergleichen verwendet, ob zwei JSONs sind gleich. Diese Funktion ermittelt zunächst, ob obj1 und obj2 genau gleich sind, und gibt in diesem Fall „true“ zurück. Als nächstes prüft es, ob obj1 und obj2 vom gleichen Typ sind und gibt andernfalls false zurück. Anschließend prüft es, ob sowohl obj1 als auch obj2 vom Array- oder Objekttyp sind und gibt „false“ zurück, wenn eines vom Array-Typ und das andere vom Objekttyp ist. Wenn beide JSON-Objekte vom Objekttyp sind, verwenden Sie die Methode Object.keys(), um eine Liste ihrer Eigenschaftsnamen abzurufen und die beiden Listen auf Gleichheit zu vergleichen. Anschließend wird die Funktion deepEqual für jedes Attribut von obj1 rekursiv aufgerufen, um zu vergleichen, ob die Werte der entsprechenden Attribute in obj1 und obj2 gleich sind. Wenn die Werte einer der Eigenschaften nicht gleich sind, gibt die Funktion „false“ zurück, andernfalls gibt sie „true“ zurück.
Fazit
Die Bestimmung, ob zwei JSONs in JavaScript gleich sind, ist eine sehr nützliche Operation. Unabhängig davon, ob oberflächliche Vergleiche oder tiefe Vergleiche verwendet werden, gibt es viele Möglichkeiten, dieses Problem zu lösen. Wenn Sie nur die Eigenschaften der obersten Ebene eines JSON-Objekts vergleichen müssen, verwenden Sie flache Vergleichsmethoden. Wenn Sie alle Eigenschaften eines JSON-Objekts vergleichen müssen, einschließlich verschachtelter Eigenschaften, verwenden Sie die Methode des Tiefenvergleichs, um das Problem zu lösen. Unabhängig davon, für welche Methode Sie sich entscheiden, denken Sie daran, Ihre Lösung zu testen, um sicherzustellen, dass sie zwei JSON-Objekte korrekt auf Gleichheit vergleicht.
Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob zwei JSONs in Javascript gleich sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!