Sort & Deep Copy in JavaScript
Übungsaufgaben zur sort
-Funktion
-
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"] -
Ein Array numerisch auf- und absteigend sortieren
Erstelle eine Funktion
sortNumbers(numbers, order)
, die ein Array von Zahlen sortiert. Der Parameterorder
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] -
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 }
// ] -
Nach mehreren Eigenschaften sortieren
Schreibe eine Funktion
sortProducts(products)
, die ein Array von Produktobjekten zuerst nachcategory
und dann nachprice
(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
-
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 - Eine flache Kopie (
-
Deep Copy einer verschachtelten Array-Struktur
Gegeben ist ein verschachteltes Array
matrix
. Erstelle eine FunktiondeepCopyMatrix(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 -
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) -
Array von Objekten tief kopieren
Gegeben ist ein Array
arr
mit verschachtelten Objekten. Erstelle eine FunktiondeepCopyArray(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 -
Deep Copy und Manipulation
Erstelle eine Funktion
updateCityInCopy(user, newCity)
, die eine tiefe Kopie des Objektsuser
erstellt, diecity
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.