Lodash 集合类精选
一、检测是否都为真 _.every
_.every(collection, [predicate=_.identity])
参数
collection
(Array|Object): 一个用来迭代的集合。predicate
(Array|Function|Object|string): 每次迭代调用的函数。返回
- (boolean): 如果所有元素经 predicate(断言函数) 检查后都都返回真值,那么就返回true,否则返回 false 。
通过 predicate
(断言函数) 检查 collection
(集合)中的所有元素是否都返回真值。
一旦 predicate
(断言函数) 返回假值,迭代就马上停止。
predicate
(断言函数)调用三个参数: (value, index|key, collection)。
_.every([true, 1, null, 'yes'], Boolean);
// => false
var users = [
{ 'user': 'barney', 'age': 36, 'active': false },
{ 'user': 'fred', 'age': 40, 'active': false }
];
// The `_.matches` iteratee shorthand.
_.every(users, { 'user': 'barney', 'active': false });
// => false
// The `_.matchesProperty` iteratee shorthand.
_.every(users, ['active', false]);
// => true
// The `_.property` iteratee shorthand.
_.every(users, 'active');
// => false
二、过滤集合 _.filter
_.filter(collection, [predicate=_.identity])
参数
collection
(Array|Object): 一个用来迭代的集合。predicate
(Array|Function|Object|string): 每次迭代调用的函数。返回
- (Array): 返回一个新的过滤后的数组。
遍历 collection
(集合)元素,返回 predicate
(断言函数)返回真值 的所有元素的数组。
predicate
(断言函数)调用三个参数:(value, index|key, collection)。
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false }
];
_.filter(users, function(o) { return !o.active; });
// => [{ 'user': 'fred', 'age': 40, 'active': false }]
// The `_.matches` iteratee shorthand.
_.filter(users, { 'age': 36, 'active': true });
// => [{ 'user': 'barney', 'age': 36, 'active': true }]
// The `_.matchesProperty` iteratee shorthand.
_.filter(users, ['active', false]);
// => [{ 'user': 'fred', 'age': 40, 'active': false }]
// The `_.property` iteratee shorthand.
_.filter(users, 'active');
// => [{ 'user': 'barney', 'age': 36, 'active': true }]
三、遍历集合 _.forEach
_.forEach(collection, [iteratee=_.identity])
参数
collection
(Array|Object): 一个用来迭代的集合。iteratee
(Function): 每次迭代调用的函数。返回
- (*): 返回集合 collection。
调用 iteratee
遍历 collection
(集合) 中的每个元素,iteratee
调用3个参数: (value, index|key, collection)。
如果迭代函数(iteratee)显式的返回 false ,迭代会提前退出。
_([1, 2]).forEach(function(value) {
console.log(value);
});
// => Logs `1` then `2`.
_.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
console.log(key);
});
// => Logs 'a' then 'b' (iteration order is not guaranteed).
四、检测元素是否存在 _.includes
_.includes(collection, value, [fromIndex=0])
参数
collection
(Array|Object|string): 要检索的集合。value
(*): 要检索的值。fromIndex
(number): 要检索的索引位置,默认为 0。返回
- (boolean): 如果找到 value 返回 true, 否则返回 false。
检查 value
(值) 是否在 collection
(集合) 中。
如果 collection
(集合)是一个字符串,那么检查 value
(值,子字符串)是否在字符串中,否则使用SameValueZero
做等值比较。
如果指定 fromIndex
是负数,那么从 collection
(集合) 的结尾开始检索。
_.includes([1, 2, 3], 1);
// => true
_.includes([1, 2, 3], 1, 2);
// => false
_.includes({ 'user': 'fred', 'age': 40 }, 'fred');
// => true
_.includes('pebbles', 'eb');
// => true
五、遍历并返回映射 _.map
_.map(collection, [iteratee=_.identity])
参数
collection
(Array|Object): 用来迭代的集合。iteratee
(Array|Function|Object|string): 每次迭代调用的函数。返回
- (Array): 返回新的映射后数组。
创建一个数组, value(值) 是 iteratee
(迭代函数)遍历 collection
(集合)中的每个元素后返回的结果。
iteratee
(迭代函数)调用3个参数: (value, index|key, collection)
function square(n) {
return n * n;
}
_.map([4, 8], square);
// => [16, 64]
_.map({ 'a': 4, 'b': 8 }, square);
// => [16, 64] (iteration order is not guaranteed)
var users = [
{ 'user': 'barney' },
{ 'user': 'fred' }
];
// The `_.property` iteratee shorthand.
_.map(users, 'user');
// => ['barney', 'fred']
六、遍历并返回统计 _.reduce
_.reduce(collection, [iteratee=_.identity], [accumulator])
参数
collection
(Array|Object): 用来迭代的集合。iteratee
(Function): 每次迭代调用的函数。accumulator
(*): 初始值。返回
- (*): 返回累加后的值。
压缩 collection
(集合)为一个值,通过 iteratee
(迭代函数)遍历 collection
(集合)中的每个元素,每次返回的值会作为下一次迭代使用(注:作为iteratee
(迭代函数)的第一个参数使用)
如果没有提供 accumulator
,则 collection
(集合)中的第一个元素作为初始值。(注:accumulator
参数在第一次迭代的时候作为iteratee
(迭代函数)第一个参数使用)
iteratee
调用4个参数: _(accumulator, value, index|key, collection)_
_.reduce([1, 2], function(sum, n) {
return sum + n;
}, 0);
// => 3
_.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
(result[value] || (result[value] = [])).push(key);
return result;
}, {});
// => { '1': ['a', 'c'], '2': ['b'] } (无法保证遍历的顺序)
七、返回随机元素值 _.sample
_.sample(collection)
参数
- collection (Array|Object): 要取样的集合。
返回
- (*): 返回随机元素。
从 collection
(集合)中获得一个随机元素。
_.sample([1, 2, 3, 4]);
// => 2
八、打乱元素顺序 _.shuffle
_.shuffle(collection)
参数
collection
(Array|Object): 要打乱的集合。返回
- (Array): 返回打乱的新数组。
创建一个被打乱值的集合。 使用Fisher-Yates shuffle 版本。
_.shuffle([1, 2, 3, 4]);
// => [4, 1, 3, 2]
九、返回集合长度 _.size
_.size(collection)
参数
- collection (Array|Object): 要检查的集合
返回
- (number): 返回集合的长度。
返回 collection
(集合)的长度,如果集合是类数组或字符串,返回其 length;如果集合是对象,返回其可枚举属性的个数。
_.size([1, 2, 3]);
// => 3
_.size({ 'a': 1, 'b': 2 });
// => 2
_.size('pebbles');
// => 7