⊗jsPmRcMS 278 of 505 menu

Ricorsione e strutture multidimensionali in JavaScript

Dato un array multidimensionale di livello arbitrario di annidamento, ad esempio, come questo:

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

Come puoi vedere, questo array ha una struttura complessa, e si presume che questa struttura possa essere arbitraria e i livelli di annidamento possano essere profondi a piacere.

Supponiamo di voler stampare in console tutti gli elementi primitivi (cioè non array) del nostro array. In questo caso, per iterare su un tale array non potremmo semplicemente usare i cicli, poiché l'array ha una struttura irregolare e un livello di annidamento sconosciuto.

Tuttavia, per iterare su un tale array è molto comodo usare la ricorsione.

Per iniziare, creiamo una funzione che prende come parametro il nostro array, e all'interno della funzione creiamo un ciclo per iterare sull'array:

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

Il ciclo che abbiamo creato itererà solo sugli elementi dell'array principale. Cioè, prima stamperà 1, poi [2, 7, 8], e poi [3, 4, [5, [6, 7]].

Ora, all'interno del ciclo, distinguiamo gli elementi primitivi dagli elementi array:

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

E ora facciamo in modo che se il nostro elemento è un array, la funzione richiami sé stessa, passando come parametro questo array:

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

Dato un oggetto multidimensionale di livello arbitrario di annidamento, ad esempio, come questo:

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

Utilizzando la ricorsione, stampa in console tutti gli elementi primitivi di questo oggetto.

Dato un array multidimensionale di livello arbitrario di annidamento, ad esempio, come questo:

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

Scrivi il codice che espanderà il nostro array multidimensionale in un array unidimensionale. Per l'array sopra mostrato il risultato sarà il seguente:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta