⊗jsPmRcMS 278 of 505 menu

Rekurzia a multidimenzionálne štruktúry v JavaScripte

Dané je pole ľubovoľnej úrovne multidimenzionality a vnorenia, napríklad takéto:

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

Ako vidíte, toto pole má zložitú štruktúru, pričom sa predpokladá, že táto štruktúra môže byť ľubovoľná a úrovne vnorenia môžu byť ľubovoľne hlboko.

Povedzme, že chceme do konzoly vypísať všetky primitívne (teda nie polia) elementy nášho poľa. V tomto prípade na prechod takéhoto poľa jednoducho nemôžeme použiť cykly, pretože pole má nepravidelnú štruktúru a neznámu úroveň vnorenia.

Na prechod takéhoto poľa je však veľmi vhodné použiť rekurziu.

Na začiatok vytvorme funkciu, do ktorej ako parameter budeme odovzdávať naše pole, a vo funkcii urobme cyklus na prechod nášho poľa:

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

Cyklus, ktorý sme urobili, bude prechádzať iba elementy hlavného poľa. To znamená, že najprv vypíše 1, potom [2, 7, 8], a potom [3, 4, [5, [6, 7]].

Teraz v cykle rozdeľme elementy-primitíva a elementy-polia:

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

A teraz urobme to, aby ak je náš element - pole, funkcia zavolala samu seba, pričom odovzdá ako parameter 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]]]]);

Daný je multidimenzionálny objekt ľubovoľnej úrovne vnorenia, napríklad takýto:

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

Pomocou rekurzie vypíšte všetky primitívne elementy tohto objektu do konzoly.

Dané je multidimenzionálne pole ľubovoľnej úrovne vnorenia, napríklad takýto:

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

Napíšte kód, ktorý rozbalí naše multidimenzionálne pole na jednorozmerné. Pre vyššie uvedené pole to bude vyzerať takto:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť