【发布时间】:2020-01-29 03:26:32
【问题描述】:
我正在为对象中的每个键创建一个单独的函数,如下所示:
对象
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')));
但它只是返回未排序的对象。
【问题讨论】:
标签: javascript sorting object closures