⊗jsPmRcMS 278 of 505 menu

Recursie en multidimensionale structuren in JavaScript

Gegeven een multidimensionale array van een willekeurig niveau van genestheid, bijvoorbeeld zoals deze:

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

Zoals je kunt zien, heeft deze array een complexe structuur, en er wordt van uitgegaan dat deze structuur willekeurig kan zijn en de niveaus van genestheid willekeurig diep kunnen zijn.

Stel dat we alle primitieve (dat wil zeggen, geen arrays) elementen van onze array naar de console willen loggen. In dit geval kunnen we eenvoudigweg geen loops gebruiken om deze array door te lopen, omdat de array een onregelmatige structuur heeft en een onbekend niveau van genestheid.

Maar voor het doorlopen van zo'n array is het erg handig om recursie te gebruiken.

Laten we eerst een functie maken, waarin we als parameter onze array doorgeven, en in de functie maken we een loop om onze array door te lopen:

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

De door ons gemaakte loop zal alleen de elementen van de hoofdarray doorlopen. Dat wil zeggen, eerst logt het 1, dan [2, 7, 8], en dan [3, 4, [5, [6, 7]].

Laten we nu in de loop onderscheid maken tussen primitieve elementen en array-elementen:

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

En laten we het nu zo maken dat als ons element een array is, de functie zichzelf aanroept, en die array als parameter doorgeeft:

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]]]]);

Gegeven een multidimensionaal object van een willekeurig niveau van genestheid, bijvoorbeeld zoals deze:

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

Gebruik recursie om alle primitieve elementen van dit object naar de console te loggen.

Gegeven een multidimensionale array van een willekeurig niveau van genestheid, bijvoorbeeld zoals deze:

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

Schrijf code die onze multidimensionale array afvlakt naar een eendimensionale array. Voor de bovenstaande array ziet het er als volgt uit:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren