Menu
Coddy logo textTech

Flache und tiefe Kopie

Teil des Abschnitts Logik & Ablauf der JavaScript-Journey von Coddy. Lektion 25 von 65.

Beim Kopieren von Objekten gibt es zwei Arten von Kopien:

  1. Flache Kopie – kopiert nur die erste Ebene
  2. Tiefe Kopie – kopiert alle verschachtelten Ebenen

Methoden für flache Kopien:

Verwendung des Spread-Operators:

const original = { a: 1, b: { x: 2 } };
const spreadCopy = { ...original };

Verwendung von Object.assign(), das ein neues Objekt erstellt, indem Eigenschaften vom Quellobjekt in das Zielobjekt kopiert werden:

const assignCopy = Object.assign({}, original);

Problem mit flacher Kopie:

original.b.x = 3;
console.log(spreadCopy.b.x); // 3
// (verschachtelte Objekte teilen sich die Referenz)

console.log(assignCopy.b.x); // 3

JSON-Methoden verstehen & Deep Copy

JSON.stringify() konvertiert ein JavaScript-Objekt in eine JSON-Zeichenfolge:

const obj = { name: "John", age: 30 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // "{"name":"John","age":30}"

JSON.parse() wandelt einen JSON-String wieder in ein JavaScript-Objekt um:

const backToObject = JSON.parse(jsonString);
console.log(backToObject); // { name: "John", age: 30 }

Tiefe Kopie mit JSON:

const original = { a: 1, b: { x: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));

original.b.x = 3;
console.log(deepCopy.b.x); // 2 (vollständig unabhängig)
challenge icon

Aufgabe

Einfach

Erstelle eine Funktion namens processCart, die einen JSON-String entgegennimmt, der einen Warenkorb darstellt. Der Warenkorb enthält ein Array von Produkten mit Namen und Preisen. Deine Aufgabe ist es:

  1. Den JSON-String in ein JavaScript-Objekt zu parsen
  2. ZWEI separate Warenkörbe daraus zu erstellen
  3. Im zweiten Warenkorb:
    1. Jedem Element eine discounted-Eigenschaft mit dem Wert false hinzuzufügen
    2. Auf alle Elemente, deren price größer als 50 ist, einen Rabatt von 10 % anzuwenden
    3. Für Elemente, die den Rabatt erhalten haben, 'discounted' auf true zu setzen
  4. Ein Array zurückzugeben, das beide Warenkörbe enthält

Probier es selbst

function processCart(jsonString) {
    // Schreibe den Code hier
}
// Schreibe nichts außerhalb der Funktion
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-JavaScript-Compiler