Methoden verketten
Wenn du ein Array ausgibst, siehst du es so, wie es im Code geschrieben wird, mit eckigen Klammern und Anführungszeichen. Um es in gewöhnlichen Text zu verwandeln, benutze join(). Die Methode verbindet alle Elemente zu einem Text und setzt den Text, den du ihr gibst, dazwischen:
const namen = ["Ella", "Leo", "Gina"];
console.log(namen.join(", "));
console.log(namen.join(" und "));
console.log(namen.join());Ella, Leo, Gina
Ella und Leo und Gina
Ella,Leo,GinaOhne Argument setzt join() nur ein Komma zwischen die Elemente, ohne Leerzeichen.
filter() und map() geben Arrays zurück, und jedes Array hat diese Methoden. Du kannst die nächste Methode also direkt auf dem Ergebnis aufrufen, ohne es vorher in einer Variable zu speichern. Das nennt man Verketten (englisch chaining):
const jungeNamen = tiere
.filter((tier) => tier.alter < 5)
.map((tier) => tier.name);
console.log(jungeNamen.join(", "));Gina, PipLies die Kette von oben nach unten: Nimm die Tiere, behalte die, die jünger als 5 sind, und erstelle ein Array mit ihren Namen. Das ist dasselbe wie zwei Schritte mit einer Variable dazwischen:
const junge = tiere.filter((tier) => tier.alter < 5);
const jungeNamen = junge.map((tier) => tier.name);Wenn du jede Methode in eine eigene Zeile schreibst, beginnend mit dem Punkt, lässt sich eine Kette leichter lesen. Es ist trotzdem eine einzige Anweisung, das Semikolon steht also nur ganz am Ende. Auch join() kann das letzte Glied einer Kette sein: tiere.map((tier) => tier.name).join(", "). Es gibt einen Text zurück, kein Array, deshalb muss es ganz hinten stehen.
Typische Fehler:
- Die falsche Reihenfolge. In
tiere.map((tier) => tier.name).filter((tier) => tier.alter < 5)kommtmap()zuerst und lässt nur die Namen übrig. Ein Name ist ein Text und hat keinalter, also ist die Bedingung nie wahr, und das Ergebnis ist[]. Wähle zuerst die Elemente aus und wandle sie dann um. - Ein Semikolon mitten in einer Kette. Nach
.filter(...);endet die Anweisung, und die nächste Zeile, die mit einem Punkt beginnt, ist ein Fehler:SyntaxError: Unexpected token '.'.
So schreibst du es:
Anweisungen
- 1
Gib die Temperaturen der ganzen Woche in einer Zeile aus, durch Kommas getrennt:
Temperaturen: 18, 23, 25, 19, 22, 16, 21. Benutzemap()undjoin(). - 2
Gib darunter mit einer Kette aus
filter(),map()undjoin()die Namen der Tage aus, an denen es wärmer als 20 Grad war:Warme Tage: Dienstag, Mittwoch, Freitag, Sonntag.