Destrukturování
Když z objektu potřebujete několik vlastností, často pro každou píšete samostatný řádek:
const leo = { jmeno: "Leo", druh: "lev", vek: 6 };
const jmeno = leo.jmeno;
const vek = leo.vek;Destrukturování (anglicky destructuring) udělá totéž na jednom řádku:
const leo = { jmeno: "Leo", druh: "lev", vek: 6 };
const { jmeno, vek } = leo;
console.log(`${jmeno} má ${vek} let.`);Leo má 6 let.Vlevo od = jsou ve složených závorkách vlastnosti, které chcete z objektu vytáhnout. JavaScript pro každou z nich vytvoří proměnnou se stejným názvem a s její hodnotou. Na pořadí v závorkách nezáleží: { vek, jmeno } funguje stejně. Objekt zůstane, jak byl, a vlastnosti, které nevyjmenujete, jako tady druh, prostě žádnou proměnnou nedostanou.
Destrukturovat jde i pole, a to pomocí hranatých závorek. Tady rozhoduje pořadí: první proměnná dostane první prvek, druhá proměnná druhý prvek a tak dále:
const veky = [12, 6, 4, 2];
const [prvni, druhy] = veky;
console.log(prvni, druhy);12 6To se hodí k řazení. Seřaďte kopii pole a vytáhněte z ní prvky, které jsou na začátku:
const [nejmladsi, druheNejmladsi] = [...zvirata].sort((a, b) => a.vek - b.vek);
console.log(nejmladsi.jmeno, druheNejmladsi.jmeno);Pepík ŽofkaTypické chyby:
- Ve složených závorkách název, který v objektu není klíčem.
const { Jmeno } = leo;dáundefined, protože klíč jejmenos malým j. - Proměnná, která už existuje. Destrukturování vytváří nové proměnné, takže když už program má
const jmeno, skončíconst { jmeno } = leo;chybouSyntaxError: Identifier 'jmeno' has already been declared(proměnná už existuje). Starý řádek smažte.
Jak psát:
Pokyny
Nahraďte dva řádky, které vytvářejí jmeno a cas, jedním řádkem, který obě hodnoty vytáhne z vitez pomocí destrukturování. Program vypíše totéž co předtím: Vyhrál Adam s časem 49 sekund.
Pod to vytáhněte z poradi pomocí destrukturování pole první tři běžce jako zlato, stribro a bronz. Vypište jejich jména: Stupně vítězů: Adam, Cyril, Šárka.