📅  最后修改于: 2023-12-03 15:20:50.535000             🧑  作者: Mango
Underscore.JS是一个JavaScript实用库,提供了一系列函数来帮助我们简化开发过程中的操作,尤其是针对集合数据类型的处理操作。
Underscore.JS提供了一系列用于处理集合数据类型的函数,包括数组、对象等。下面来介绍一些常用的函数。
_.each(list, iteratee, [context])
each函数用来遍历集合中的每一项,对于每一项都会执行iteratee函数。其中,list是集合,iteratee是函数,在每一项上执行。我们可以为iteratee传递三个参数:元素值,元素索引,集合本身。
_.each([1, 2, 3], function(num, index, list){
console.log(num, index, list);
});
// output:
// 1 0 [1, 2, 3]
// 2 1 [1, 2, 3]
// 3 2 [1, 2, 3]
_.map(list, iteratee, [context])
map函数用来遍历集合中的每一个元素,并将它们转换为一个新的值。其中,list是集合,iteratee是函数,在每一项上执行。同样,我们可以为iteratee传递三个参数:元素值,元素索引,集合本身。
var nums = _.map([1, 2, 3], function(num){
return num * 3;
});
console.log(nums); // output: [3, 6, 9]
_.find(list, predicate, [context])
find函数用来在集合中查找匹配的项,并返回该项。其中,list是集合,predicate是一个函数,用来检测每一项是否符合条件。函数每次执行,会接收三个参数:元素值,元素索引,集合本身。
var pets = [
{name: 'cat', type: 'feline'},
{name: 'dog', type: 'canine'},
{name: 'elephant', type: 'mammal'},
{name: 'monkey', type: 'primate'}
];
var canine = _.find(pets, function(pet){
return pet.type === 'canine';
});
console.log(canine);
// output:
// {name: 'dog', type: 'canine'}
_.filter(list, predicate, [context])
filter函数用于筛选集合中符合条件的元素。其中,list是集合,predicate是一个函数,用来检测每一项是否符合条件。函数每次执行,会接收三个参数:元素值,元素索引,集合本身。
var pets = [
{name: 'cat', type: 'feline'},
{name: 'dog', type: 'canine'},
{name: 'elephant', type: 'mammal'},
{name: 'monkey', type: 'primate'}
];
var mammals = _.filter(pets, function(pet){
return pet.type === 'mammal';
});
console.log(mammals);
// output:
// [{name: 'elephant', type: 'mammal'}]
_.reduce(list, iteratee, [memo], [context])
reduce函数用于将集合中的元素归纳为单个值。其中,list是集合,iteratee是一个函数,用于处理每一个元素,memo则是处理的初始值。每次执行,iteratee函数会接收三个参数:memo、元素值、元素索引。
var nums = [1, 2, 3];
var sum = _.reduce(nums, function(memo, num){
return memo + num;
}, 0);
console.log(sum); // output: 6
_.invoke(list, methodName, *arguments)
invoke函数用于调用集合中每个元素的指定方法。其中,list是集合,methodName是方法名,*arguments则是要传递的参数。
var nums = [[5, 1, 7], [4, 3, 6]];
var max = _.invoke(nums, 'max');
console.log(max); // output: [7, 6]
_.sortBy(list, iteratee, [context])
sortBy函数用于将集合中的元素按指定规则排列。其中,list是集合,iteratee是一个函数,用于获取参与排序的值,context则是该函数的执行上下文。
var pets = [
{name: 'cat'},
{name: 'dog'},
{name: 'elephant'},
{name: 'monkey'}
];
var sorted = _.sortBy(pets, function(pet){
return pet.name;
});
console.log(sorted);
// output:
// [{name: 'cat'}, {name: 'dog'}, {name: 'elephant'}, {name: 'monkey'}]
_.groupBy(list, iteratee, [context])
groupBy函数用于将集合中的元素按指定规则分组。其中,list是集合,iteratee是一个函数,用于获取参与分组的值,context则是该函数的执行上下文。
var pets = [
{name: 'cat', type: 'feline'},
{name: 'dog', type: 'canine'},
{name: 'elephant', type: 'mammal'},
{name: 'monkey', type: 'primate'}
];
var groupType = _.groupBy(pets, function(pet){
return pet.type;
});
console.log(groupType);
// output:
// {
// 'feline': [{name: 'cat', type: 'feline'}],
// 'canine': [{name: 'dog', type: 'canine'}],
// 'mammal': [{name: 'elephant', type: 'mammal'}],
// 'primate': [{name: 'monkey', type: 'primate'}]
// }
Underscore.JS提供了一系列用于处理集合数据类型的函数,它们可以使我们的开发工作更加高效,代码更加简洁。以上函数仅仅是其中的一部分,更多函数可以参考Underscore.JS官方文档,相信你会有更多的收获。