📜  Underscore.JS-迭代集合(1)

📅  最后修改于: 2023-12-03 15:20:50.552000             🧑  作者: Mango

Underscore.JS-迭代集合

Underscore.JS是一个JavaScript实用库,它提供了一组有用的函数,方便处理JavaScript中的数据结构。在这里,我们将讨论Underscore.JS中关于迭代集合的函数。

迭代数组

Underscore.JS提供了几个函数来迭代数组。它们包括:

_.each(list, iteratee, [context])

这个函数用来遍历一个数组或对象中的元素。iteratee函数将被传入两个参数:值和索引。context参数可以用于指定iteratee函数中的上下文。

_.each([1, 2, 3], function(value, index) {
  console.log(value, index);
});
// Output:
// 1 0
// 2 1
// 3 2
_.map(list, iteratee, [context])

这个函数用来返回一个新的修改后的数组。它接受一个数组作为输入,以及一个用来转换每个元素的函数。返回的数组的长度和输入数组相同。

var numbers = [1, 2, 3];
var doubled = _.map(numbers, function(num) {
  return num * 2;
});
console.log(doubled);
// Output: [2, 4, 6]
_.reduce(list, iteratee, [memo], [context])

这个函数将一个数组合并成一个值。它接受一个数组,一个迭代器函数和一个可选的memo值(默认为数组的第一个值)。iteratee函数将被调用来计算memo的值,接下来将使用这个值,以及数组中的下一个值,并返回一个新的memo值。如果没有传入memo值,则第一次迭代会使用数组中的第一个值。context参数可以用于指定iteratee函数中的上下文。

var sum = _.reduce([1, 2, 3], function(memo, num) {
  return memo + num;
}, 0);
console.log(sum);
// Output: 6
_.filter(list, predicate, [context])

这个函数用来过滤数组中符合条件的元素。它接受一个输入数组,并返回一个包含筛选后的元素的新数组。predicate函数将被传入三个参数:值,索引和数组本身。context参数可以用于指定predicate函数中的上下文。

var even = _.filter([1, 2, 3, 4, 5, 6], function(num) {
  return num % 2 === 0;
});
console.log(even);
// Output: [2, 4, 6]
_.reject(list, predicate, [context])

这个函数用来过滤数组中不符合条件的元素。它接受一个输入数组,并返回一个包含未筛选的元素的新数组。predicate函数将被传入三个参数:值,索引和数组本身。context参数可以用于指定predicate函数中的上下文。

var odd = _.reject([1, 2, 3, 4, 5, 6], function(num) {
  return num % 2 === 0;
});
console.log(odd);
// Output: [1, 3, 5]
迭代对象

Underscore.JS提供了几个函数来迭代对象。它们包括:

_.each(obj, iteratee, [context])

这个函数用来遍历一个对象中的属性和值。iteratee函数将被传入两个参数:值和属性名。context参数可以用于指定iteratee函数中的上下文。

_.each({one: 1, two: 2, three: 3}, function(value, key) {
  console.log(key, value);
});
// Output:
// one 1
// two 2
// three 3
_.mapObject(obj, iteratee, [context])

这个函数用来返回一个新的包含修改后的属性和值的对象。它接受一个对象作为输入,以及一个用来转换每个元素的函数。iteratee函数将被传入两个参数:值和属性名。返回的对象的属性和输入对象相同。

var obj = {first: 1, second: 2, third: 3};
var doubled = _.mapObject(obj, function(num) {
  return num * 2;
});
console.log(doubled);
// Output: {first: 2, second: 4, third: 6}
_.findKey(obj, predicate, [context])

这个函数用来查找对象中第一个符合条件的属性名。predicate函数将被传入三个参数:值,属性名和对象本身。context参数可以用于指定predicate函数中的上下文。

var key = _.findKey({one: 1, two: 2, three: 3}, function(num) {
  return num % 2 === 0;
});
console.log(key);
// Output: "two"
总结

Underscore.JS提供了很多有用的函数来迭代集合,无论是数组还是对象。熟练使用这些函数可以让程序员更加高效地处理JavaScript中的数据结构。