⊗jsPmRcMS 278 of 505 menu

Recursión y Estructuras Multidimensionales en JavaScript

Se da un array multidimensional de nivel arbitrario de anidamiento, por ejemplo, como este:

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

Como puedes ver, este array tiene una estructura compleja, y se supone que esta estructura puede ser arbitraria y los niveles de anidamiento pueden ser tan profundos como se desee.

Supongamos que queremos mostrar en la consola todos los elementos primitivos (es decir, que no son arrays) de nuestro array. En este caso, para recorrer dicho array simplemente no podremos usar bucles, porque el array tiene una estructura irregular y un nivel de anidamiento desconocido.

Sin embargo, para recorrer dicho array será muy conveniente usar recursión.

Para empezar, creemos una función que tome como parámetro nuestro array, y dentro de la función creemos un bucle para recorrer nuestro array:

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

El bucle que hemos creado solo recorrerá los elementos del array principal. Es decir, primero mostrará 1, luego [2, 7, 8], y luego [3, 4, [5, [6, 7]].

Ahora vamos a separar en el bucle los elementos primitivos y los elementos que son arrays:

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

Y ahora hagamos que si nuestro elemento es un array, la función se llame a sí misma, pasando como parámetro ese 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]]]]);

Se da un objeto multidimensional de nivel arbitrario de anidamiento, por ejemplo, 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 recursión, muestra todos los elementos primitivos de este objeto en la consola.

Se da un array multidimensional de nivel arbitrario de anidamiento, por ejemplo, como este:

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

Escribe el código que convierta nuestro array multidimensional en un array unidimensional. Para el array anterior, se vería así:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar