Direkt zum Hauptinhalt springen
eLearner.app
Modul 3 · Lektion 3 von 411/32 im Kurs~12 min
Lektionen des Moduls (3/4)

Destrukturierung und Spread

Zwei syntaktische Features aus derselben Familie, die durch ES6 eingeführt wurden und heute zum täglichen Brot für jeden gehören, der modernes JS schreibt:

  • Destructuring (Destrukturierung): Extrahiere mehrere Werte aus Arrays/Objekten in einer einzigen Zeile.
  • Spread ... (Verteilung): „Verteilt“ ein Array oder ein Objekt in ein anderes.

Zusammen machen sie den Code viel prägnanter und lesbarer.

Destrukturierung von Objekten

Einfach ausgedrückt: „Erstelle die Konstanten nome und eta mit den Werten der gleichnamigen Eigenschaften von utente.

JS
const utente = { nome: 'Anna', eta: 28, ruolo: 'admin' };

const { nome, eta } = utente;
console.log(nome); // 'Anna'
console.log(eta); // 28

Umbenennen

Füge : neuerName nach dem Schlüssel hinzu:

JS
const { nome: n, eta: years } = utente;
// crea le variabili n e years

Standardwert

Wenn die Eigenschaft fehlt (oder undefined ist), wird der Standardwert verwendet:

JS
const { ruolo = 'reader', telefono = 'n/d' } = utente;
// ruolo = 'admin' (presente), telefono = 'n/d' (assente)

Destrukturierung von Arrays

Funktioniert nach Position:

JS
const colori = ['rosso', 'verde', 'blu'];
const [primo, secondo] = colori;
// primo = 'rosso', secondo = 'verde'

const [, , terzo] = colori; // salta i primi due
const [a, ...resto] = colori; // a = 'rosso', resto = ['verde','blu']

Spread bei Arrays

...arr „verteilt“ die Elemente:

JS
const a = [1, 2, 3];
const b = [4, 5];

const unione = [...a, ...b]; // [1, 2, 3, 4, 5]
const copia = [...a]; // copia superficiale di a
const conPiu = [0, ...a, 4]; // [0, 1, 2, 3, 4]

Spread bei Objekten

Nachfolgende Schlüssel überschreiben die vorherigen — grundlegend für unveränderliche (immutable) Aktualisierungen:

JS
const utente = { nome: 'Anna', eta: 28 };

const aggiornato = { ...utente, eta: 29 };
// { nome: 'Anna', eta: 29 } — utente NON è stato toccato

const con = { ...utente, attivo: true };
// { nome: 'Anna', eta: 28, attivo: true }

Probier es aus

Übung#js.m3.l3.e1
Versuche: 0Wird geladen…

Extrahiere für `user = { name: 'Marco', age: 34, city: 'Torino' }` mittels Destrukturierung nur `name` und `city` in zwei Konstanten und gib `\`${name} di ${city}\`` zurück (muss den Wert 'Marco di Torino' ergeben).

Editor wird geladen…
Hinweis anzeigen

const { name, city } = user; dann ein Template-Literal mit den beiden Werten.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#js.m3.l3.e2
Versuche: 0Wird geladen…

Gib für `base = { theme: 'dark', size: 'md' }` ein identisches NEUES Objekt zurück, bei dem jedoch `size` unter Verwendung von Spread auf 'lg' gesetzt ist.

Editor wird geladen…
Hinweis anzeigen

Der letzte Ausdruck muss das Objekt sein. Wickle es in runde Klammern ein: ({ ...base, ... }).

Lösung nach 3 Versuchen verfügbar