⊗jsPmRcMS 278 of 505 menu

Rekurzija in večdimenzionalne strukture v JavaScript

Dano je večdimenzionalno polje poljubne ravni gnezditve, na primer takšno:

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

Kot lahko vidite, ima to polje kompleksno strukturo, pri čemer se predpostavlja, da je ta struktura lahko poljubna in so ravni gnezditve lahko poljubno globoke.

Recimo, da želimo izpisati v konzolo vse primitivne (to je, ne polja) elemente našega polja. V tem primeru preprosto ne moremo uporabiti zank za prehod skozi takšno polje, ker ima polje nepravilno strukturo in neznano raven gnezditve.

Vendar pa je za prehod skozi takšno polje zelo priročno uporabiti rekurzijo.

Za začetek naredimo funkcijo, ki ji bomo kot parameter podali naše polje, v funkciji pa naredimo zanko za prehod skozi naše polje:

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

Zanka, ki smo jo naredili, bo prebirala samo elemente glavnega polja. To pomeni, da bo najprej izpisala 1, nato [2, 7, 8], in nato [3, 4, [5, [6, 7]].

Zdaj pa v zanki ločimo elemente-primitive in elemente-polja:

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

In zdaj naredimo tako, da če je naš element polje, funkcija pokliče samo sebe in poda to polje kot parameter:

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 večdimenzionalni objekt poljubne ravni gnezditve, na primer takšen:

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

Z uporabo rekurzije izpišite vse primitivne elemente tega objekta v konzolo.

Dan je večdimenzionalno polje poljubne ravni gnezditve, na primer takšno:

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

Napišite kodo, ki bo naš večdimenzionalno polje razširila v enodimenzionalno. Za zgoraj navedeno polje bo to izgledalo takole:

[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
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni