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:
- Flache Kopie (Shallow Copy) - kopiert nur die erste Ebene
- Tiefe Kopie (Deep Copy) - kopiert alle verschachtelten Ebenen
Flache Kopier-Methoden:
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 Quell- zum Zielobjekt kopiert werden:
const assignCopy = Object.assign({}, original);Problem mit der flachen Kopie:
original.b.x = 3;
console.log(spreadCopy.b.x); // 3
// (verschachtelte Objekte teilen sich die Referenz)
console.log(assignCopy.b.x); // 3Verständnis von JSON-Methoden & Deep Copy
JSON.stringify() wandelt ein JavaScript-Objekt in einen JSON-String um:
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)Aufgabe
EinfachErstellen Sie 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. Ihre Aufgabe ist es:
- Den JSON-String in ein JavaScript-Objekt umzuwandeln
- ZWEI separate Warenkörbe daraus zu erstellen
- Im zweiten Warenkorb:
- Fügen Sie jedem Element eine Eigenschaft
discountedhinzu, die auf false gesetzt ist - Wenden Sie einen Rabatt von 10 % auf alle Artikel an, deren
pricegrößer als 50 ist - Setzen Sie 'discounted' für Artikel, die den Rabatt erhalten haben, auf true
- Fügen Sie jedem Element eine Eigenschaft
- Geben Sie ein Array zurück, das beide Warenkörbe enthält
Spickzettel
Beim Kopieren von Objekten gibt es zwei Arten von Kopien:
- Flache Kopie (Shallow Copy) - kopiert nur die erste Ebene
- Tiefe Kopie (Deep Copy) - 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():
const assignCopy = Object.assign({}, original);Problem bei flachen Kopien:
original.b.x = 3;
console.log(spreadCopy.b.x); // 3 (nested objects share reference)JSON-Methoden:
JSON.stringify() konvertiert ein JavaScript-Objekt in einen JSON-String:
const obj = { name: "John", age: 30 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // "{"name":"John","age":30}"JSON.parse() konvertiert einen JSON-String zurück in ein JavaScript-Objekt:
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 (completely independent)Probier es selbst
function processCart(jsonString) {
// Code hier schreiben
}
// Schreibe nichts außerhalb der FunktionDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Strings im Detail
String-GrundlagenÜber Strings iterierenTemplate LiteralsString-MethodenRückblick – String Weaver4JSON Teil 2
Über JSON iterierenVerschachteltes JSONJSON Optional ChainingFlache und tiefe KopieWiederholung – FahrradladenWiederholung – Sonnensystem7Bibliotheksverwaltungssystem
ProjektübersichtBücher hinzufügen2Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysZugriff auf 2D-Array-ElementeVerschachtelte Schleifen mit 2D-ArraysRückblick – 2D-ArraysMatrix-Addition & SubtraktionJagged Arrays3D-Arrays und mehrGängige 2D-Array-MusterRückblick – Alles über Arrays5Sets Teil 1
Was ist ein Set?Iterieren über SetsEin Element hinzufügenEin Element entfernenPrüfen, ob ein Element existiertGröße und Is EmptyCopy und ClearZusammenfassung - Grundlagen von Sets8Arrays: Interessante Themen
Array-DestrukturierungSpread-Syntax in ArraysSparse ArraysWiederholung – Arrays Workshop3JSON Teil 1
Was ist JSON?Prüfen, ob Key existiertObjektmethodenDer Spread-Operator Teil 1Der Spread-Operator Teil 2Keys entfernenWiederholung – JSON-Keys manipulieren