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

191
Vistas
¿Por qué la ordenación de matriz no funciona como se esperaba?

¿Alguien puede decirme lo que me estoy perdiendo aquí? No me da el resultado esperado.

Quería ordenar la matriz en orden ascendente y descendente según la fecha, pero por alguna razón, solo ordena la matriz en orden descendente.

 let res = [ ['03-01-2019', 'Test 3'], ['03-01-2020', 'Test 1'], ['03-01-2021', 'Test 2'] ]; const toDate = (dateStr) => { const [month, day, year] = dateStr.split("-") return new Date(year, month - 1, day) } let SortedDefault = res; //default array value, no sorting has been done. let SortedAscDate = res.sort(function (a, b) { return toDate(a[0]) - toDate(b[0]) }); //sort array in asc order let SortedDescDate = res.sort(function (a, b) { return toDate(b[0]) - toDate(a[0]) }); //sort array in desc order document.getElementById("default").innerHTML = SortedDefault; document.getElementById("asc").innerHTML = SortedAscDate; document.getElementById("desc").innerHTML = SortedDescDate;
 <p id="default"></p> <p id="asc"></p> <p id="desc"></p>

Esperaba los siguientes resultados;

 03-01-2019,Test 3,03-01-2020,Test 1,03-01-2021,Test 2 //original, no sorting has been done. 03-01-2019,Test 3,03-01-2020,Test 1,03-01-2021,Test 2 //sort in asc order 03-01-2021,Test 2,03-01-2020,Test 1,03-01-2019,Test 3 //sort in des order

En cambio, obtuve esto (los tres están descendiendo???);

 03-01-2021,Test 2,03-01-2020,Test 1,03-01-2019,Test 3 //original, no sorting has been done (but how can it sorted in des order?) 03-01-2021,Test 2,03-01-2020,Test 1,03-01-2019,Test 3 //sort in asc, but it has been sort in desc order 03-01-2021,Test 2,03-01-2020,Test 1,03-01-2019,Test 3 //sort in des order, correct result.
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El método sort ordena los elementos de una matriz en su lugar.

Utilice res.slice().sort(...)

about 4 years ago · Juan Pablo Isaza Denunciar

0

.sort() muta la matriz principal. Para superar, puede usar una copia electrónica [...res] para ordenar como

 let SortedAscDate = [...res].sort(function(a, b) { return toDate(a[0]) - toDate(b[0]) }) 

 let res = [ ['03-01-2019', 'Test 3'], ['03-01-2020', 'Test 1'], ['03-01-2021', 'Test 2'] ]; const toDate = (dateStr) => { const [month, day, year] = dateStr.split("-") return new Date(year, month - 1, day) } let SortedDefault = res; //default array value, no sorting has been done. let SortedAscDate = [...res].sort(function(a, b) { return toDate(a[0]) - toDate(b[0]) }); //sort array in asc order let SortedDescDate = [...res].sort(function(a, b) { return toDate(b[0]) - toDate(a[0]) }); //sort array in desc order document.getElementById("default").innerHTML = SortedDefault; document.getElementById("asc").innerHTML = SortedAscDate; document.getElementById("desc").innerHTML = SortedDescDate;
 <p id="default"></p> <p id="asc"></p> <p id="desc"></p>

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