Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

271
Vistas
acceder a matrices no contadas anidadas en JavaScript

He anidado las matrices que hizo el usuario. Quiero un código JavaScript para acceder, por ejemplo, al elemento "g" en él

 var nestedArrays = [ [a,b,c,d], [e,f,[ g,h ]] ];

en este ejemplo puedo acceder al elemento "g" usando este código

 var element = nestedarrays[2][1][1];

PERO si "g" está anidado en 100 de matrices, tengo que escribir muchos corchetes, ya que

 var g = nestedArrays[2][3][1][?][?].....[?];

O no sé cuánto "g" está anidado

¿HAY un código fácil para obtener cualquier elemento en las matrices anidadas con javascript o jquery puro?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Si solo está tratando de encontrar un elemento en particular, puede aplanar la matriz y encontrarlo de esa manera.

 var nestedArrays = [ ['a','b','c','d'], ['e','f',[ 'g','h' ]] ]; const g = nestedArrays.flat(Infinity).find(x => x === 'g'); console.log(g);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Todos sabemos que las matrices están basadas en cero.

En su primer ejemplo para acceder a 'g' , debe acceder a:

  • la segunda posición (índice [1] ) que es ['e','f',['g','h']]
  • luego acceda a la tercera posición (índice [2] ) que es ['g','h']
  • finalmente la primera posición (índice [0] ) y obtienes 'g' .
 var nestedArrays = [['a','b','c','d'],['e','f',['g','h']]]; let x = nestedArrays[1][2][0]; console.log(x); // g

Entonces, a partir de eso, podemos decir que para acceder a 'g'
Necesitamos seguir este camino de índices [1,2,0]

 var nestedArrays = [['a','b','c','d'],['e','f',['g','h']]]; let roadToG = [1,2,0]; for(let i = 0; i < roadToG.length; i++){ nestedArrays = nestedArrays[roadToG[i]]; } console.log(nestedArrays); // g

PERO si "g" está anidado en 100 de las matrices, tengo que escribir muchos corchetes, ya que var g = nestedArrays[2][3][1][?][?].....[?];

En caso de que queramos acceder a 'g' dinámicamente sin código duro el camino de los índices ; Debemos hacer un bucle recursivo en la matriz hasta que encontremos 'g' , en el bucle hacemos un seguimiento de la carretera

 function loopRecursively( arr, x ,roadToX = []){ if(JSON.stringify(arr).indexOf(x) == -1) return null; //in edge case where there is no x in array; we just return null! for ( let i = 0; i < arr.length; i++ ) { if( arr[i] == x ){ roadToX.push(i); } else if( Array.isArray( arr[i] ) && JSON.stringify(arr[i]).indexOf(x) != -1 ){ roadToX.push(i); loopRecursively( arr[i] , x, roadToX); } } return roadToX; } let nestedArrays = [['a','b','c','d'],['e','f',['g','h']]]; console.log( loopRecursively( nestedArrays, 'g' ) ); // [1, 2, 0]
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda