📅  最后修改于: 2023-12-03 15:05:43.195000             🧑  作者: Mango
Underscore.js 是一个流行的 JavaScript 工具库,提供了许多用于操作集合、函数、对象等数据类型的方便方法。其中 _.comparator() 方法用于创建一个可供排序使用的比较函数。
_.comparator([iteratee], [context])
iteratee
(可选): 用来生成排序依据的函数。缺省时默认为返回同传入参数。context
(可选): iteratee
需要运行时的上下文环境。假定我们有以下数组:
const arr = [
{ name: 'john', age: 20 },
{ name: 'peter', age: 18 },
{ name: 'mark', age: 22 }
];
我们可以使用 _.comparator() 方法创建一个比较函数:
const compareByAge = _.comparator(function(person) {
return person.age; // 比较年龄
});
arr.sort(compareByAge);
这将按年龄升序排列该数组。
我们还可以使用上下文环境来创建可复用的比较函数:
const context = { multiplier: 2 };
function generateComparer(multiplier) {
return _.comparator(function(num) {
return num * multiplier;
}, context);
}
const compareByDoubledNumber = generateComparer(context.multiplier);
const numbers = [3, 1, 4, 2, 5];
numbers.sort(compareByDoubledNumber);
这将按照两倍数字升序排列数组。在此示例中,_.comparator()
方法允许我们用通用的 generateComparer()
函数生成具有不同倍数的可重用比较器。