⊗jsPmRcMS 278 of 505 menu

Rekurze a multidimenzionální struktury v JavaScriptu

Je dáno multidimenzionální pole libovolné úrovně vnoření, například takové:

let arr = [ 1, [ 2, 7, 8 ], [ 3, 4, [5, [6, 7]], ] ];

Jak vidíte, toto pole má složitou strukturu a předpokládá se, že tato struktura může být libovolná a úrovně vnoření mohou být libovolně hluboké.

Předpokládejme, že chceme do konzole vypsat všechny primitivní (tj. ne pole) prvky našeho pole. V tomto případě pro průchod takového pole jednoduše nemůžeme použít cykly, protože pole má nepravidelnou strukturu a neznámou úroveň vnoření.

Naopak pro průchod takového pole bude velmi výhodné použít rekurzi.

Nejprve vytvoříme funkci, do které parametrem budeme předávat naše pole, a ve funkci vytvoříme cyklus pro průchod našeho pole:

function func(arr) { for (let elem of arr) { console.log(elem); } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

Cyklus, který jsme vytvořili, bude procházet pouze prvky hlavního pole. To znamená, že nejprve vypíše 1, potom [2, 7, 8], a pak [3, 4, [5, [6, 7]].

Nyní v cyklu oddělujme prvky-primitivity a prvky-pole:

function func(arr) { for (let elem of arr) { if (typeof elem == 'object') { // prvek - pole } else { // prvek - primitiv console.log(elem); } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

A nyní udělejme to, že pokud je náš prvek pole, funkce zavolá sama sebe, a předá parametrem toto pole:

function func(arr) { for (let elem of arr) { if (typeof elem == 'object') { func(elem); } else { console.log(elem); } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

Je dán multidimenzionální objekt libovolné úrovně vnoření, například takový:

{a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}}

Pomocí rekurze vypište všechny primitivní prvky tohoto objektu do konzole.

Je dáno multidimenzionální pole libovolné úrovně vnoření, například takové:

[1, [2, 7, 8], [3, 4, [5, [6, 7]]]]

Napište kód, který rozbalí naše multidimenzionální pole do jednorozměrného. Pro výše uvedené pole to bude vypadat takto:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout