Estoy trabajando en un script para reordenar una matriz con javascript. Cuando tengo un valor duplicado en la segunda columna, me gustaría ordenar este valor duplicado por orden de índice y colocarlo en una nueva matriz.
El objetivo es transformar una matriz como esta:
myarr = [ [5, 7] [2, 8] [3, 7] ]; var valeurcroiss = myarr.sort(compareSecondColumn); var valeurdecroiss = valeurcroiss.reverse(); valeurdecroiss.length = 3; function compareSecondColumn(a, b) { if (a[1] === b[1]) { return 0; } else { return (a[1] < b[1]) ? -1 : 1; } }Resultado que tengo:
[ 0: (2) [5, 7] 1: (2) [3, 7] 2: (2) [2, 8] ];Resultado que me gustaría tener:
[ 0: (2) [2, 8] 1: (2) [3, 7] 2: (2) [5, 7] ];Gracias por tu ayuda
Reemplazar esta línea
return (a[1] < b[1]) ? -1 : 1;con:
return (a[1] < b[1]) ? 1 : -1;Si hay un duplicado en la segunda columna, ya estará organizado correctamente si la primera columna ya está organizada correctamente. Así que busque duplicados en el índice 0 y ordénelos por el índice 1 y ordene el resto por el índice 0.
const pairs = [[5, 7], [2, 8], [3, 7], [2, 6]]; let output = pairs.sort((a, b) => a[0] === b[0] ? a[1] - b[1] : a[0] - b[0]); console.log(output);