Die Array-Destrukturierung in JavaScript ist eine prägnante Möglichkeit, Werte aus einem Array zu extrahieren und sie einzelnen Variablen zuzuweisen.
In diesem Beispiel wird jeder Wert im Array numberOfMoons seinem entsprechenden Planeten zugewiesen:
const numberOfMoons = [0, 2, 14];
const [venus, mars, neptune] = numberOfMoons;
neptune;
// => 14
Kurz gesagt:
In JavaScript gibt es außerdem eine Destrukturierungssyntax, um Eigenschaften aus einem Objekt zu extrahieren und sie einzelnen Variablen zuzuweisen.
In diesem Beispiel werden Wettersymbole aus dem Objekt weather extrahiert:
const weather = {
sun: '☀️',
sun_behind_small_cloud: '🌤️',
sun_behind_cloud: '⛅',
sun_behind_large_cloud: '🌥️',
sun_behind_rain_cloud: '🌦️',
cloud: '☁️',
cloud_with_rain: '🌧️',
cloud_with_snow: '🌨️',
cloud_with_lightning: '🌩️',
cloud_with_lightning_and_rain: '⛈️',
};
const { sun, cloud, cloud_with_lightning: thunder } = weather;
sun;
// => '☀️'
cloud;
// => '☁️'
thunder;
// => '🌩️'
Kurz gesagt:
Elyse, angehende Zauberin, setzt ihre Ausbildung fort. Sie hat ein Kartendeck, das sie manipulieren möchte.
Um es einfacher zu machen, beginnt sie meist nur mit Karten, die von 2 bis 10 nummeriert sind, obwohl einige der Tricks zusätzliche (Bild-)Karten enthalten können.
Es gibt viele Möglichkeiten, die Karten zu mischen, aber um die Illusion der Magie aufrechtzuerhalten, ist es entscheidend, dass keine einzige Methode verwendet wird, z. B. benutzt Elyse weder splice, slice, shift, unshift, push noch at.
Auch der Array-Zugriff array[index] und der Objekt-Zugriff (object[key] und object.key) dürfen niemals verwendet werden.
Möchtest du Elyse helfen, ihre Magie auf das nächste Level zu bringen?
Jede Funktion kann mit den Parametern und einem Funktionskörper implementiert werden, der aus einem einzigen return expression besteht.
Elyse beschwört die erste Karte im Deck, ohne array[index], .at(index) oder .shift() zu verwenden.
Es ist wie Magie.
const deck = [5, 9, 7, 1, 8];
getFirstCard(deck);
// => 5
Elyse führt einen Taschenspielertrick vor und beschwört die zweite Karte im Deck, ohne array[index] oder .shift() zu verwenden.
const deck = [3, 2, 10, 6, 7];
getSecondCard(deck);
// => 2
Elyse lässt die beiden Karten des Decks die Plätze tauschen. Sie muss keine einzige Funktion aufrufen.
const deck = [10, 7];
swapTwoCards(deck);
// => [7, 10]
Um noch einen Taschenspielertrick vorzuführen, nimmt Elyse drei Karten und schiebt die oberste Karte schnell nach hinten, sodass die mittlere Karte zur ersten Karte wird und die alte unterste Karte zur mittleren Karte. Sie muss keine einzige Funktion aufrufen.
const deck = [2, 6, 10];
shiftThreeCardsAround(deck);
// => [6, 10, 2]
Elyse teilt das Deck in zwei Stapel.
Dann bittet sie den Zuschauer, einen der beiden Stapel auszuwählen, den wir chosen nennen.
Der Stapel disregarded ist nicht mehr relevant, und sie lässt ihn verschwinden.
Sie muss keine einzige Funktion aufrufen.
const deck = [5, 4, 7, 10];
const chosen = [5, 4];
const disregarded = [7, 10];
pickNamedPile({ chosen, disregarded });
// => [5, 4]
Leider wählt der Zuschauer immer wieder den „falschen" Stapel, doch mit etwas cleverer, schneller Magie benennt Elyse den Stapel chosen in disregarded um und den Stapel disregarded in chosen.
Sie muss keine einzige Funktion aufrufen.
const deck = [5, 4, 7, 10];
const chosen = [5, 4];
const disregarded = [7, 10];
swapNamedPile({ chosen, disregarded });
// => { chosen: [7, 10], disregarded: [5, 4] }
Melde dich bei Exercism an, um JavaScript mit 37 Konzepte159 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.