⊗jsPmRcMS 278 of 505 menu

Rekursion og multidimensionelle strukturer i JavaScript

Givet et multidimensionelt array med en vilkårlig niveau af indlejring, for eksempel som dette:

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

Som du kan se, har dette array en kompleks struktur, og det antages, at denne struktur kan være vilkårlig, og niveauerne af indlejring kan være uendeligt dybe.

Lad os sige, at vi ønsker at udskrive alle primitive (altså ikke arrays) elementer af vores array til konsollen. I dette tilfælde vil vi simpelthen ikke kunne bruge loops til at gennemgå et sådant array, fordi arrayet har en uregelmæssig struktur og et ukendt indlejringsniveau.

Derimod vil rekursion være meget egnet til at gennemgå et sådant array.

Lad os starte med at lave en funktion, hvor vi som parameter sender vores array, og i funktionen laver vi et loop for at gennemgå vores array:

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

Det loop, vi har lavet, vil kun gennemgå elementerne i hovedarrayet. Det vil først udskrive 1, derefter [2, 7, 8], og derefter [3, 4, [5, [6, 7]].

Lad os nu i løkken skelne mellem primitive elementer og array-elementer:

function func(arr) { for (let elem of arr) { if (typeof elem == 'object') { // elementet er et array } else { // elementet er en primitiv værdi console.log(elem); } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

Og lad os nu gøre sådan, at hvis vores element er et array, kalder funktionen sig selv, og sender dette array som 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]]]]);

Givet et multidimensionelt objekt med et vilkårligt niveau af indlejring, for eksempel som dette:

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

Brug rekursion til at udskrive alle primitive elementer af dette objekt til konsollen.

Givet et multidimensionelt array med et vilkårligt niveau af indlejring, for eksempel som dette:

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

Skriv kode, der vil udflade vores multidimensionelle array til et endimensionelt array. For arrayet vist ovenfor vil det se sådan ud:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis