Zum Hauptinhalt springen

Sort & Deep Copy in JavaScript

Übungsaufgaben zur sort-Funktion

  1. Ein Array alphabetisch sortieren

    Erstelle eine Funktion sortNames(names), die ein Array von Namen alphabetisch sortiert zurückgibt.

    const names = ["Julia", "Adam", "Chris", "Eva"];
    // Erwartete Ausgabe: ["Adam", "Chris", "Eva", "Julia"]
  2. Ein Array numerisch auf- und absteigend sortieren

    Erstelle eine Funktion sortNumbers(numbers, order), die ein Array von Zahlen sortiert. Der Parameter order bestimmt, ob die Sortierung aufsteigend (asc) oder absteigend (desc) erfolgt.

    const numbers = [12, 4, 9, 23, 1];
    // sortNumbers(numbers, 'asc') -> [1, 4, 9, 12, 23]
    // sortNumbers(numbers, 'desc') -> [23, 12, 9, 4, 1]
  3. Nach Eigenschaften eines Objekts sortieren

    Gegeben ist ein Array von Objekten, die Personen repräsentieren. Erstelle eine Funktion sortByAge(people), die das Array nach Alter aufsteigend sortiert.

    const people = [
    { name: "John", age: 28 },
    { name: "Alice", age: 24 },
    { name: "Mike", age: 30 }
    ];
    // Erwartete Ausgabe: [
    // { name: "Alice", age: 24 },
    // { name: "John", age: 28 },
    // { name: "Mike", age: 30 }
    // ]
  4. Nach mehreren Eigenschaften sortieren

    Schreibe eine Funktion sortProducts(products), die ein Array von Produktobjekten zuerst nach category und dann nach price (aufsteigend) sortiert.

    const products = [
    { name: "Laptop", category: "Electronics", price: 1200 },
    { name: "Book", category: "Books", price: 20 },
    { name: "Phone", category: "Electronics", price: 800 },
    { name: "Notebook", category: "Books", price: 10 }
    ];
    // Erwartete Ausgabe:
    // [
    // { name: "Notebook", category: "Books", price: 10 },
    // { name: "Book", category: "Books", price: 20 },
    // { name: "Phone", category: "Electronics", price: 800 },
    // { name: "Laptop", category: "Electronics", price: 1200 }
    // ]

Übungsaufgaben zu Deep Copy und Referenzen

  1. Shallow Copy und Deep Copy verstehen

    Gegeben ist ein Objekt original. Erstelle:

    • Eine flache Kopie (shallowCopy), die nur eine Ebene kopiert.
    • Eine tiefe Kopie (deepCopy), die das gesamte Objekt rekursiv kopiert.
    const original = {
    name: "Alice",
    details: {
    age: 25,
    city: "Berlin"
    }
    };

    // Ändere die `city` in der Kopie und überprüfe, ob sich das Originalobjekt verändert hat
  2. Deep Copy einer verschachtelten Array-Struktur

    Gegeben ist ein verschachteltes Array matrix. Erstelle eine Funktion deepCopyMatrix(matrix), die eine tiefe Kopie des Arrays zurückgibt, sodass Änderungen in der Kopie das Original nicht beeinflussen.

    const matrix = [[1, 2], [3, 4], [5, 6]];
    // Erwartete Ausgabe: Ein neues Array, das identisch ist, aber keine Referenz zum Original hat
  3. Vergleich von Referenzen und Werten

    Schreibe eine Funktion compareObjects(obj1, obj2), die zwei Objekte rekursiv vergleicht und überprüft, ob alle Werte übereinstimmen (tiefer Vergleich).

    const obj1 = { a: 1, b: { c: 2 } };
    const obj2 = { a: 1, b: { c: 2 } };
    const obj3 = obj1;
    // compareObjects(obj1, obj2) -> true
    // compareObjects(obj1, obj3) -> true (weil obj3 eine Referenz auf obj1 ist)
  4. Array von Objekten tief kopieren

    Gegeben ist ein Array arr mit verschachtelten Objekten. Erstelle eine Funktion deepCopyArray(arr), die das Array und seine Objekte vollständig kopiert.

    const arr = [
    { name: "Alice", details: { age: 25, city: "Berlin" } },
    { name: "Bob", details: { age: 30, city: "Paris" } }
    ];

    // deepCopyArray(arr) sollte ein neues Array zurückgeben, das unabhängig vom Original ist
  5. Deep Copy und Manipulation

    Erstelle eine Funktion updateCityInCopy(user, newCity), die eine tiefe Kopie des Objekts user erstellt, die city des kopierten Objekts ändert und das Original unverändert lässt.

    const user = {
    name: "Alice",
    address: {
    city: "Berlin",
    country: "Germany"
    }
    };
    // updateCityInCopy(user, "Hamburg") sollte das Objekt zurückgeben, in dem `city` auf "Hamburg" gesetzt ist, ohne das Original zu verändern.