📅  最后修改于: 2023-12-03 15:35:28.200000             🧑  作者: Mango
Underscore.js 是一个流行的 JavaScript 工具库,提供了很多有用的函数和工具,有助于简化 JavaScript 编程。以下是 Underscore.js 中的一些常用函数及其用法:
使用 each 函数可以遍历集合中的每个元素,对每个元素执行指定的函数。它的语法如下:
_.each(list, iteratee, [context])
其中,list 是要遍历的集合,可以是数组或对象;iteratee 是要对每个元素执行的函数,可接收三个参数:(value, index|key, list),分别表示当前元素、当前索引或键、整个集合;context 是 iteratee 函数中 this 的上下文。
例如,以下代码遍历了一个数组并将每个元素打印到控制台:
_.each([1, 2, 3], function(num) {
console.log(num);
});
// Output:
// 1
// 2
// 3
使用 map 函数可以对集合中的每个元素执行指定的函数,并返回执行结果组成的新数组。它的语法如下:
_.map(list, iteratee, [context])
其中,list 是要遍历的集合,可以是数组或对象;iteratee 是要对每个元素执行的函数,可接收三个参数:(value, index|key, list),分别表示当前元素、当前索引或键、整个集合;context 是 iteratee 函数中 this 的上下文。
例如,以下代码将一个数组中的每个元素加 1,并返回新数组:
var nums = [1, 2, 3];
var newNums = _.map(nums, function(num) {
return num + 1;
});
console.log(newNums); // Output: [2, 3, 4]
使用 reduce 函数可以将集合中的所有元素通过指定的函数进行累加、合并,返回一个累加后的结果。它的语法如下:
_.reduce(list, iteratee, [memo], [context])
其中,list 是要遍历的集合,可以是数组或对象;iteratee 是每个元素要执行的函数,接收四个参数:(memo, value, index|key, list),分别表示当前累加结果、当前元素、当前索引或键、整个集合;memo 是累加结果的初始值,可以省略;context 是 iteratee 函数中 this 的上下文。
例如,以下代码将一个数组中的所有元素相加,并返回累加后的结果:
var nums = [1, 2, 3];
var sum = _.reduce(nums, function(memo, num) {
return memo + num;
});
console.log(sum); // Output: 6
使用 filter 函数可以返回一个新的数组,其中包含符合指定条件的集合元素。它的语法如下:
_.filter(list, predicate, [context])
其中,list 是要遍历的集合,可以是数组或对象;predicate 是一个返回布尔值的函数,接收三个参数:(value, index|key, list),分别表示当前元素、当前索引或键、整个集合;context 是 predicate 函数中 this 的上下文。
例如,以下代码返回一个数组中所有大于 2 的元素:
var nums = [1, 2, 3, 4, 5];
var filteredNums = _.filter(nums, function(num) {
return num > 2;
});
console.log(filteredNums); // Output: [3, 4, 5]
使用 find 函数可以在集合中查找符合指定条件的第一个元素,找到则返回该元素,否则返回 undefined。它的语法如下:
_.find(list, predicate, [context])
其中,list 是要遍历的集合,可以是数组或对象;predicate 是一个返回布尔值的函数,接收三个参数:(value, index|key, list),分别表示当前元素、当前索引或键、整个集合;context 是 predicate 函数中 this 的上下文。
例如,以下代码在一个数组中查找第一个大于 2 的元素:
var nums = [1, 2, 3, 4, 5];
var firstNum = _.find(nums, function(num) {
return num > 2;
});
console.log(firstNum); // Output: 3
使用 sortBy 函数可以对集合中的元素按指定规则进行排序,并返回排序后的新数组。它的语法如下:
_.sortBy(list, iteratee, [context])
其中,list 是要排序的集合,可以是数组或对象;iteratee 是每个元素要执行的函数,接收三个参数:(value, index|key, list),分别表示当前元素、当前索引或键、整个集合;context 是 iteratee 函数中 this 的上下文。
例如,以下代码对一个数组按元素大小进行升序排列:
var nums = [4, 1, 6, 2, 9];
var sortedNums = _.sortBy(nums, function(num) {
return num;
});
console.log(sortedNums); // Output: [1, 2, 4, 6, 9]
使用 isEqual 函数可以比较两个值是否相等,相等则返回 true,否则返回 false。它的语法如下:
_.isEqual(value, other)
其中,value 和 other 是要比较的两个值。
例如,以下代码比较两个对象是否相等:
var obj1 = {name: 'Alice', age: 25};
var obj2 = {name: 'Alice', age: 25};
console.log(_.isEqual(obj1, obj2)); // Output: true
以上是 Underscore.js 中的一些常用函数,它们可以大大简化 JavaScript 编程,并提高代码的可读性和可维护性。