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

136
Vistas
Cómo crear una matriz anidada de diferente longitud a partir de una matriz multidimensional

Tengo una matriz que se ve así:

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

He inicializado una matriz vacía y quiero colocar las diagonales de la matriz dentro de la nueva matriz. Así que he intentado esto:

 arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] new_arr = []; tail = arr.length - 1; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].length; j++) { if (j == i) { new_arr.push(arr[i][j]); } if (j == tail) { new_arr.push(arr[i][j]); tail--; } } } console.log(new_arr)

La lógica parece funcionar, pero parece que no puedo obtener la estructura correcta. Lo que quiero es anidar dos matrices dentro de la nueva matriz de esta manera:

 [[1,5,9],[3,5,7]]

Pero lo que obtengo es una matriz con los valores correctos desordenados. ¿Cómo obtener el resultado esperado? Cualquier ayuda es apreciada. ¡Gracias!

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

0

 var arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; var diagonal1 = []; var diagonal2 = []; for (var i = 0; i < arr.length; i++) { diagonal1.push(arr[i][i]); diagonal2.push(arr[i][arr.length - i - 1]); } var new_arr = [diagonal1, diagonal2]; console.log(new_arr)

about 4 years ago · Juan Pablo Isaza Denunciar

0

La siguiente solución funcionaría si el ancho y el alto de la matriz numérica son siempre iguales.

 const arr = [[1,2,3], [4,5,6], [7,8,9]]; const result = [[],[]]; arr.map((row,index) => { result[0].push(row[0+index]); result[1].push(row[row.length - index - 1]); }); console.log(result); // [[1,5,9],[3,5,7]]
about 4 years ago · Juan Pablo Isaza Denunciar

0

Necesita tener 2 matrices temporales separadas. Y no necesitas bucles anidados . Puede optimizar el código de esta manera con un solo ciclo si comprende las matemáticas.

 arr = [[1,2,3], [4,5,6], [7,8,9]]; function findDiagonals(arr) { const diagonal_1 = []; const diagonal_2 = []; for( let i = 0; i < arr.length; i++ ) { diagonal_1.push(arr[i][i]); diagonal_2.push(arr[i][arr.length - (i+1)]); } return [diagonal_1, diagonal_2]; } console.log(findDiagonals(arr));

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