Destructuring – Arrays und Objekte effizient entpacken
Mit der Einführung von ES6 (ECMAScript 2015) hat JavaScript das Destructuring eingeführt, eine mächtige Syntax, die es ermöglicht, Werte aus Arrays oder Eigenschaften aus Objekten bequem zu extrahieren und Variablen zuzuweisen. Dies führt zu saubererem und lesbarerem Code, insbesondere wenn mit komplexen Datenstrukturen gearbeitet wird.
Was ist Destructuring?
Destructuring erlaubt es dir, die Elemente eines Arrays oder die Eigenschaften eines Objekts direkt in einzelne Variablen zu zerlegen. Anstatt jedes Element einzeln zuzuweisen, kannst du mit einer einzigen Anweisung mehrere Werte extrahieren.
Destructuring von Arrays
Beginnen wir mit der Verarbeitung von Daten aus Arrays.
Grundlegendes Beispiel:
const rgb = [255, 200, 0];
// Ohne Destructuring
const red = rgb[0];
const green = rgb[1];
const blue = rgb[2];
// Mit Destructuring
const [red, green, blue] = rgb;
console.log(red); // 255
console.log(green); // 200
console.log(blue); // 0
Überspringen von Elementen:
Du kannst Elemente im Array überspringen, indem du leere Kommas verwendest:
const coordinates = [10, 20, 30];
// Wir möchten nur x und z
const [x, , z] = coordinates;
console.log(x); // 10
console.log(z); // 30
Standardwerte festlegen:
Falls ein Wert nicht vorhanden ist, kannst du einen Standardwert zuweisen:
const colors = ['rot'];
// green und blue erhalten Standardwerte
const [red, green = 'grün', blue = 'blau'] = colors;
console.log(red); // 'rot'
console.log(green); // 'grün'
console.log(blue); // 'blau'
Destructuring von Objekten
Was für die Verarbeitung von Daten aus Arrays angeht, gilt auch für Objekte.
Grundlegendes Beispiel:
const person = {
name: 'Maria',
age: 30,
city: 'Berlin'
};
// Ohne Destructuring
const name = person.name;
const age = person.age;
// Mit Destructuring
const { name, age } = person;
console.log(name); // 'Maria'
console.log(age); // 30
Umbenennen von Variablen:
Wenn du die Variablennamen ändern möchtest, kannst du Aliase verwenden:
const user = {
username: 'maxmuster',
email: 'max@example.com'
};
const { username: userName, email: userEmail } = user;
console.log(userName); // 'maxmuster'
console.log(userEmail); // 'max@example.com'
Standardwerte festlegen:
Auch bei Objekten kannst du Standardwerte verwenden:
const options = {
width: 400
};
const { width, height = 500 } = options;
console.log(width); // 400
console.log(height); // 500
Verschachteltes Destructuring
Destructuring kann auch auf verschachtelte Arrays und Objekte angewendet werden.
Beispiel mit Arrays:
const colors = ['rot', ['grün', 'hellgrün'], 'blau'];
const [primary, [secondary, lightGreen]] = colors;
console.log(primary); // 'rot'
console.log(secondary); // 'grün'
console.log(lightGreen); // 'hellgrün'
Beispiel mit Objekten:
const student = {
name: 'Lukas',
address: {
street: 'Hauptstraße',
city: 'München'
}
};
const {
name,
address: { city }
} = student;
console.log(name); // 'Lukas'
console.log(city); // 'München'
Verwendung in Funktionen
Destructuring ist besonders nützlich beim Umgang mit Funktionen, die Objekte oder Arrays als Parameter erhalten.
Parameter Destructuring:
// Ohne Destructuring
function printUser(user) {
console.log(`Name: ${user.name}`);
console.log(`Alter: ${user.age}`);
}
// Mit Destructuring
function printUser({ name, age }) {
console.log(`Name: ${name}`);
console.log(`Alter: ${age}`);
}
const user = { name: 'Eva', age: 28 };
printUser(user);
Rückgabewerte Destructuring:
function getCoordinates() {
return [50, 100];
}
const [x, y] = getCoordinates();
console.log(x); // 50
console.log(y); // 100
Rest-Parameter mit Destructuring
Du kannst den Rest-Operator ...
verwenden, um die restlichen Elemente eines Arrays oder Objekts zu erfassen.
Bei Arrays:
const numbers = [1, 2, 3, 4, 5];
const [first, second, ...rest] = numbers;
console.log(first); // 1
console.log(second); // 2
console.log(rest); // [3, 4, 5]
Bei Objekten:
const settings = {
theme: 'dark',
notifications: true,
autoSave: false
};
const { theme, ...otherSettings } = settings;
console.log(theme); // 'dark'
console.log(otherSettings); // { notifications: true, autoSave: false }
Praktische Anwendungsfälle
- Austausch von Variablenwerten:
Hier das Beispiel ohne Destructuring mit Hilfe einer temporären Variable.
let a = 1;
let b = 2;
const tmp = a;
a = b;
b = tmp;
console.log(a); // 2
console.log(b); // 1
Hier das Beispiel mit Destructuring ohne die Hilfe einer temporären Variable.
let a = 1;
let b = 2;
[a, b] = [b, a];
console.log(a); // 2
console.log(b); // 1
- Schnelles Extrahieren von Daten aus API-Antworten:
So kann im zweiten “then” das aus dem Response stammende JSON schon gleich defragmentiert werden.
fetch('/api/user')
.then(response => response.json())
.then(({ id, name, email }) => {
console.log(id, name, email);
});
Fazit
Destructuring ist ein kraftvolles Feature von JavaScript, das deinen Code nicht nur kompakter, sondern auch lesbarer macht. Es erleichtert das Arbeiten mit Arrays und Objekten erheblich und reduziert den Boilerplate-Code.
Nutze Destructuring in deinem nächsten Projekt und entdecke, wie es deine Arbeitsweise mit Datenstrukturen revolutionieren kann!