📜  Underscore.js 集合完整参考(1)

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

Underscore.js 集合完整参考

Underscore.js 是一个流行的 JavaScript 库,它提供了许多强大的函数和工具,用于操作和迭代集合数据。在这里,我们将深入研究 Underscore.js 可用的一些最常用的集合函数。

each

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

该函数简单地遍历集合中的所有元素,并对每个元素执行一个迭代器函数。迭代器函数采用一个参数,每次迭代都会将该参数设置为集合中的下一个元素。

_.each([1, 2, 3], function(num) {
  console.log(num);
});
// 输出: 1 2 3
map

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

该函数遍历集合中的所有元素,并将每个元素传递给一个迭代器函数。此函数的返回值将作为新数组的元素。

_.map([1, 2, 3], function(num) {
  return num * 3;
});
// 输出: [3, 6, 9]
reduce

_.reduce(list, iteratee, [memo], [context])

该函数从左到右迭代集合中的所有元素,将每个元素应用到一个迭代器函数中,并将结果缩减为单个值。可以使用可选的 memo 参数来指定初始值。

_.reduce([1, 2, 3], function(memo, num) {
  return memo + num;
}, 0);
// 输出: 6
find

_.find(list, predicate, [context])

该函数遍历集合中的所有元素,并返回第一个使断言函数返回真值的元素。如果没有匹配项,则返回 undefined。

_.find([1, 2, 3, 4, 5], function(num){
  return num % 2 == 0;
});
// 输出: 2
filter

_.filter(list, predicate, [context])

该函数遍历集合中的所有元素,并返回所有使断言函数返回真值的元素的数组。

_.filter([1, 2, 3, 4, 5], function(num) {
  return num % 2 == 0;
});
// 输出: [2, 4]
reject

_.reject(list, predicate, [context])

该函数遍历集合中的所有元素,并返回所有使断言函数返回假值的元素的数组。

_.reject([1, 2, 3, 4, 5], function(num) {
  return num % 2 == 0;
});
// 输出: [1, 3, 5]
every

_.every(list, [predicate], [context])

该函数遍历集合中的所有元素,并返回一个布尔值,指示是否对所有元素执行的断言都为真。

_.every([true, 1, null, 'yes'], _.identity);
// 输出: false
some

_.some(list, [predicate], [context])

该函数遍历集合中的所有元素,并返回一个布尔值,指示是否有至少一个元素通过断言函数。

_.some([null, 0, 'yes', false]);
// 输出: true
contains

_.contains(list, value, [fromIndex])

该函数返回一个布尔值,指示值是否在集合中。如果指定了 fromIndex,则只搜索从该索引开始的元素。

_.contains([1, 2, 3], 3);
// 输出: true
pluck

_.pluck(list, propertyName)

该函数遍历集合中的所有元素,并返回指定属性的值的数组。

var books = [
  {title: 'JavaScript: The Good Parts', author: 'Douglas Crockford'},
  {title: 'JavaScript: The Definitive Guide', author: 'David Flanagan'},
  {title: 'Eloquent JavaScript', author: 'Marijn Haverbeke'}
];
_.pluck(books, 'author');
// 输出: ['Douglas Crockford', 'David Flanagan', 'Marijn Haverbeke']
max

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

该函数返回集合中的最大值。如果指定了 iteratee 函数,则将集合中的每个元素传递给它以进行计算。

_.max([1, 2, 3, 4, 5]);
// 输出: 5
min

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

该函数返回集合中的最小值。如果指定了 iteratee 函数,则将集合中的每个元素传递给它以进行计算。

_.min([1, 2, 3, 4, 5]);
// 输出: 1
sortBy

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

该函数将集合中的元素按迭代器返回的值进行排序并返回排序后的数组对象。

_.sortBy([1, 2, 3, 4, 5], function(num) { return Math.sin(num); });
// 输出: [5, 4, 3, 1, 2]
groupBy

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

该函数将集合分组为多个数组,这些数组共享相同的属性值。每个分组代表一个属性值,并由 iteratee 计算,例如,它可以是对象的关键字或者一个函数。

_.groupBy([1.3, 2.1, 2.4], function(num){ return Math.floor(num); });
// 输出:{1: [1.3], 2: [2.1, 2.4]}
indexBy

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

该函数将集合表示为具有唯一属性的对象,并将其放入对象中。它使用 iteratee 计算属性的名称。

var books = [
  {title: 'JavaScript: The Good Parts', author: 'Douglas Crockford'},
  {title: 'JavaScript: The Definitive Guide', author: 'David Flanagan'},
  {title: 'Eloquent JavaScript', author: 'Marijn Haverbeke'}
];
_.indexBy(books, 'title');
// { 
//   'JavaScript: The Good Parts': { title: 'JavaScript: The Good Parts', author: 'Douglas Crockford' },
//   'JavaScript: The Definitive Guide': { title: 'JavaScript: The Definitive Guide', author: 'David Flanagan' },
//   'Eloquent JavaScript': { title: 'Eloquent JavaScript', author: 'Marijn Haverbeke' } 
// }
countBy

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

该函数将集合分组为多个数组,这些数组共享相同的属性值,并返回每个组中元素的计数。每个分组代表一个属性值,并由 iteratee 计算,例如,它可以是对象的关键字或者一个函数。

_.countBy([1, 2, 3, 4, 5], function(num) {
  return num % 2 == 0 ? 'even': 'odd';
});
// 输出: {odd: 3, even: 2}

以上就是 Underscore.js 集合的完整参考,希望对您有所帮助!