Tengo una matriz básica, que estoy tratando de ordenar por la propiedad de source :
const arr = [ { source: '64', target: '63' }, { source: '61', target: '64' }, { source: '114', target: '63' }, ]; console.log('before', arr); arr.sort( (a, b) => a.source > b.source // move element to a lower index ? -1 // move element to a higher index : b.source > a.source ? 1 : 0); console.log('after', arr);Pero esto deja la matriz intacta. ¿Qué estoy haciendo mal aquí?
Creo que lo estás complicando demasiado.
arr.sort((a,b) => a.source - b.source);Convierta sus cadenas en la matriz en números.
const arr = [ { source: 64, target: 63 }, { source: 61, target: 64 }, { source: 114, target: 63 }, ]; console.log('before', arr); arr.sort( (a, b) => a.source > b.source // move element to a lower index ? -1 // move element to a higher index : b.source > a.source ? 1 : 0); console.log('after', arr);Debe convertir cadenas en enteros, antes de hacer comparaciones, de lo contrario, la cadena no vacía se convertirá en verdadera y básicamente está haciendo true > true dentro de su resolución de clasificación.