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

123
Views
Ordene la matriz 2D haciendo coincidir los últimos valores con el primero en el siguiente índice

Básicamente, tengo esta matriz

 array = [[1,0],[2,1],[0,3],[3,2]]

¿Hay algún método rápido para convertir la matriz para que se vea así?

 array = [[0,3],[3,2],[2,1],[1,0]]

Lo que quiero es que el primer elemento de la nueva matriz siempre contenga 0 en el primer lugar de la matriz anidada. Eso es bastante fácil, porque la función sort() hace exactamente eso; la parte difícil es ordenar la nueva matriz como la de arriba.

En los términos más simples, me gustaría que las matrices anidadas estén "conectadas": vea cómo el 3 de la primera matriz anidada coincide con los otros 3 a su derecha y así sucesivamente.

Siéntase libre de dejar cualquier comentario para que pueda tratar de explicar el problema un poco mejor.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Para el ejemplo que dio, la solución más fácil sería ordenar la matriz 2d por el segundo elemento de cada matriz interna, de la siguiente manera:

 let array = [[1,0],[2,1],[0,3],[3,2]]; array.sort((a, b) => b[1] - a[1]);

De esa manera, puede ordenar la matriz con el método de clasificación de acuerdo con los elementos de las matrices internas.

 let array = [[1,0],[2,1],[0,3],[3,2]]; array.sort((a, b) => b[1] - a[1]); console.log(array);

about 4 years ago · Juan Pablo Isaza Report

0

Mira este método:

 const array = [[1,0],[2,1],[0,3],[3,2]]; const result = [...array]; // Put the subarray with the zero element first // You can use the sort() function but I guess this method // performs better in terms of time for (let i = 0; i < result.length; ++i) { if (result[i][0] === 0) { result.unshift(...result.splice(i, 1)); break; } } // Now reorder the array so that the last index of a subarray // matches with the first index of the other subarray for (let i = 0; i < result.length; ++i) { for (let j = i + 1; j < result.length; ++j) { if (result[i][1] === result[j][0]) { // recollocate the subarray so that it matches the way we want result.splice(i + 1, 0, ...result.splice(j, 1)); break; } } } console.log(result)

about 4 years ago · Juan Pablo Isaza Report

0

Puede tomar un objeto como referencia y reconstruir la matriz tomando los elementos encadenados.

 const getItems = (reference, value) => { const a = reference[value]; return a ? [a, ...(a[1] === 0 ? [] : getItems(reference, a[1]))] : []; }, array = [[1, 0], [2, 1], [0, 3], [3, 2]], reference = array.reduce((r, a) => (r[a[0]] = a, r), {}), result = getItems(reference, 0); console.log(result);

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!