Tengo múltiples 'opciones de ordenación' que me gustaría pasar para hacer que esta función sea reutilizable, pero todas las cadenas pasadas resultan indefinidas cuando se usan para apuntar a la clave de objetos. Si codifico el valor (nombre), se clasificará correctamente. ¡Gracias!
const sortNames = [ { name: "Maddox", age: 69 }, { name: "John", age: 69 }, { name: "Alex", age: 69 }, { name: "Mike", age: 69 }, ]; const sortSomeStuff = (param) => { const result = sortNames.sort((a, b) => { const paramA = a.param.toLowerCase(); const paramB = a.param.toLowerCase(); if (paramA > paramB) { return -1; } if (paramA < paramB) { return 1; } return 0; }); return result; }; console.log(sortSomeStuff("name"));Para tener una variable para mapear un objeto, use [] así. También se agregaron direcciones de clasificación.
const sortNames = [ { name: "Maddox", age: 20 }, { name: "John", age: 69 }, { name: "Alex", age: 69 }, { name: "Mike", age: 69 }, ]; const sortSomeStuff = (param, dir="asc") => { const result = sortNames.sort((a, b) => { var paramA = a[param].toString().toLowerCase(); var paramB = b[param].toString().toLowerCase(); if(dir=="dsc"){ paramA = b[param].toString().toLowerCase(); paramB = a[param].toString().toLowerCase(); } if (paramA < paramB) { return -1; } if (paramA > paramB) { return 1; } return 0; }); return result; }; console.log(sortSomeStuff("age","dsc"));