Kopie pomocí tří teček

filter() a map() vytvářejí nová pole, ale sort() mění přímo to původní. Někdy to vadí, protože se tím ztratí původní pořadí:

const teploty = [18, 23, 25, 19, 22];
const serazene = teploty.sort((a, b) => a - b);

console.log(serazene);
console.log(teploty);
[18, 19, 22, 23, 25]
[18, 19, 22, 23, 25]

sort() vrátí pole, které seřadilo: to samé pole, ne nové. serazene a teploty jsou dva názvy pro jedno pole a už nikdo nepozná, který den byla jaká teplota. Když chcete původní pořadí zachovat, seřaďte kopii. Tu vytvoříte pomocí tří teček (anglicky spread): [...teploty] je nové pole se všemi prvky pole teploty.

const teploty = [18, 23, 25, 19, 22];
const serazene = [...teploty].sort((a, b) => a - b);

console.log(serazene);
console.log(teploty);
[18, 19, 22, 23, 25]
[18, 23, 25, 19, 22]

Teď sort() seřadí jen kopii. Tři tečky umí také spojit několik polí do jednoho, třeba zvířata nakrmená ráno a odpoledne, a kolem nich můžete přidat další prvky:

const rano = ["Toník", "Leo"];
const odpoledne = ["Žofka", "Pepík"];
const nakrmenaDnes = [...rano, ...odpoledne, "Max"];
console.log(nakrmenaDnes);
["Toník", "Leo", "Žofka", "Pepík", "Max"]

Tři tečky fungují i s objekty, ve složených závorkách. { ...leo } je kopie objektu leo a vlastnosti, které napíšete za ni, změní kopii, ne původní objekt:

const leo = { jmeno: "Leo", druh: "lev", vek: 6 };
const starsiLeo = { ...leo, vek: 7 };

console.log(starsiLeo);
console.log(leo);
{ jmeno: "Leo", druh: "lev", vek: 7 }
{ jmeno: "Leo", druh: "lev", vek: 6 }

Typická chyba je kopírovat pomocí =. const kopie = teploty; žádné nové pole nevytvoří, jen tomu samému poli dá druhý název. kopie.sort() pak seřadí i teploty. U objektů je to stejné.

Pokyny

Pomocí tří teček vytvořte konstantu obaTydny: v jednom poli teploty minulého týdne a za nimi teploty tohoto týdne. Vypište ji: [18, 21, 24, 19, 23, 17, 9, 25, 16, 20].

Vytvořte serazene, seřazenou kopii pole obaTydny, od nejnižší teploty. Pak vypište nejnižší a nejvyšší teplotu: Nejchladněji: 9 a Nejtepleji: 25.

Pod to vypište ještě jednou obaTydny. Teploty v něm musí být pořád v pořadí dnů, jako na prvním řádku.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

Zpět

7/10

Další