⊗jsPmRcMS 278 of 505 menu

Recursão e Estruturas Multidimensionais em JavaScript

Dado um array multidimensional de nível arbitrário de aninhamento, por exemplo, como este:

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

Como você pode ver, este array tem uma estrutura complexa, e assume-se que essa estrutura pode ser arbitrária e os níveis de aninhamento podem ser tão profundos quanto necessário.

Suponha que queremos imprimir no console todos os elementos primitivos (ou seja, que não são arrays) do nosso array. Neste caso, para iterar sobre esse array, simplesmente não conseguiremos usar loops, pois o array tem uma estrutura irregular e um nível de aninhamento desconhecido.

No entanto, para iterar sobre esse array, será muito conveniente usar recursão.

Para começar, vamos criar uma função que receberá nosso array como parâmetro, e dentro da função vamos fazer um loop para iterar nosso array:

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

O loop que criamos irá iterar apenas sobre os elementos do array principal. Ou seja, primeiro ele imprimirá 1, depois [2, 7, 8], e depois [3, 4, [5, [6, 7]].

Agora, vamos separar no loop os elementos primitivos e os elementos que são arrays:

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

E agora, vamos fazer com que, se nosso elemento for um array, a função chame a si mesma, passando esse array como parâmetro:

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

Dado um objeto multidimensional de nível arbitrário de aninhamento, por exemplo, como este:

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

Usando recursão, imprima todos os elementos primitivos deste objeto no console.

Dado um array multidimensional de nível arbitrário de aninhamento, por exemplo, como este:

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

Escreva um código que transforme nosso array multidimensional em um array unidimensional. Para o array acima, ficará assim:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar