Estoy tratando de crear una función que realice una clasificación múltiple para que la lógica se pueda llamar varias veces dentro del código. Sin embargo, cuando se llama, los resultados enviados a la consola no se ordenan; es exactamente lo mismo que los data que se pasaron a la función. Pude hacer que el código funcionara antes de que se convirtiera en un método separado (ver esta publicación ). ¿Por qué la función no devuelve datos ordenados?
function multisort(data, sortBy) { const dataClone = JSON.parse(JSON.stringify(data)); return dataClone.sort((a, b) => { let result = 0; sortBy.forEach(o => { if (result !== 0) return; const property = o.property; result = o.direction * ( a[property] > b[property] ? 1 : (a[property] < b[property] ? -1 : 0) ); }); return result; }); } const students = [ { firstName: 'John', lastName: 'Appletree', grade: 12 }, { firstName: 'Mighty', lastName: 'Peachtree', grade: 10 }, { firstName: 'Kim', lastName: 'Appletree', grade: 11 }, { firstName: 'Shooter', lastName: 'Appletree', grade: 12 }, { firstName: 'Peter', lastName: 'Peachtree', grade: 12 } ]; const sortBy = [ { prop:'grade', direction: -1 }, { prop:'lastName', direction: 1 } ]; const sortedStudents = multisort(students, sortBy); console.log(students); console.log(sortedStudents);