Я создаю индивидуальную функцию для каждой клавиши в объекте следующим образом:
Объект
let users = [
{ name: "John", age: 20, surname: "Johnson" },
{ name: "Pete", age: 18, surname: "Peterson" },
{ name: "Ann", age: 19, surname: "Hathaway" }
];
Простая функция сортировки
// Sorting by name (Ann, John, Pete)
users.sort((a, b) => a.name > b.name ? 1 : -1);
// Sorting by age (Pete, Ann, John)
users.sort((a, b) => a.age > b.age ? 1 : -1);
Работает хорошо, но мне нужно создать динамическую функцию с замыканием, которая будет вызываться так:
users.sort(byField('name'));
вместо users.sort((a, b) => a.name > b.name ? 1 : -1);
Пока я пробовал это:
function byField(str) {
return (a, b) => a.str > b.str ? 1 : -1;
}
console.table(users.sort(byField('name')));
console.table(users.sort(byField('age')));
Но он просто возвращает несортированный объект.