Řetězení metod
Když vypíšete pole, uvidíte ho tak, jak se píše v kódu, s hranatými závorkami a uvozovkami. Na obyčejný text ho převede metoda join(). Spojí všechny prvky do jednoho textu a mezi ně vloží text, který jí dáte:
const jmena = ["Toník", "Leo", "Žofka"];
console.log(jmena.join(", "));
console.log(jmena.join(" a "));
console.log(jmena.join());Toník, Leo, Žofka
Toník a Leo a Žofka
Toník,Leo,ŽofkaBez argumentu dá join() mezi prvky jen čárku, bez mezery.
filter() i map() vracejí pole a každé pole tyto metody má. Další metodu proto můžete zavolat rovnou na výsledku, aniž byste ho nejdřív ukládali do proměnné. Tomu se říká řetězení:
const jmenaMladych = zvirata
.filter((zvire) => zvire.vek < 5)
.map((zvire) => zvire.jmeno);
console.log(jmenaMladych.join(", "));Žofka, PepíkŘetěz čtěte shora dolů: vezmi zvířata, nech jen ta mladší než 5 let a udělej z nich pole jmen. Je to totéž jako dva kroky s proměnnou mezi nimi:
const mlada = zvirata.filter((zvire) => zvire.vek < 5);
const jmenaMladych = mlada.map((zvire) => zvire.jmeno);Když každou metodu napíšete na samostatný řádek, který začíná tečkou, čte se řetěz snáz. Pořád je to ale jeden příkaz, a tak středník patří až úplně na konec. Na konci řetězu může být i join(): zvirata.map((zvire) => zvire.jmeno).join(", "). Vrací text, ne pole, a proto musí být poslední.
Typické chyby:
- Špatné pořadí. V řetězu
zvirata.map((zvire) => zvire.jmeno).filter((zvire) => zvire.vek < 5)jdemap()první a nechá jen jména. Jméno je text a žádnýveknemá, takže podmínka nikdy neplatí a výsledek je[]. Nejdřív prvky vyberte, potom je převeďte. - Středník uprostřed řetězu. Za
.filter(...);příkaz skončí a další řádek, který začíná tečkou, je chyba:SyntaxError: Unexpected token '.'(nečekaná tečka).
Jak psát:
Pokyny
Vypište teploty celého týdne na jeden řádek, oddělené čárkami: Teploty: 18, 23, 25, 19, 22, 16, 21. Použijte map() a join().
Pod to vypište názvy dnů, kdy bylo tepleji než 20 stupňů, pomocí řetězu filter(), map() a join(): Teplé dny: úterý, středa, pátek, neděle.