Skip to content

Türchen 03

Published: at 07:00 AMSuggest Changes

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

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

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!


Previous Post
Türchen 04
Next Post
Türchen 02