Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

130
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!