美文网首页lodash程序员
陪你读一遍loadsh (四)

陪你读一遍loadsh (四)

作者: 小熊猫猫 | 来源:发表于2017-07-03 14:42 被阅读237次

Collection方法#

 在介绍集合方法之前首先介绍一下collection的概念,可能有后端开发经验的小伙伴们对集合的概念并不陌生,比如java中的集合类(list,set,map),但是在js当中并没有那么多原生的数据结构,只能用数组的方法来模拟类似的数据结构。比如使用push,pop方法来模拟压栈和出栈,使用push,shift来模拟进出队列的数据结构。而在这里collection的集合指的是多个数组或对象组成的数据结构,类似JSON。因此数组和对象也可以使用集合的某些方法。下面就开始逐一介绍。

1..countBy(collection, [iteratee=.identity])
遍历传入的集合,用传入的处理函数进行处理,返回一个结果值和个数的键值对组成的对象。

collection (Array|Object): 待遍历的集合(可以是数组或对象).
[iteratee=_.identity] :(Function):处理函数.
例:
_.countBy([6.1, 4.2, 6.3], Math.floor);
// => { '4': 1, '6': 2 }(通过后面函数处理,结果为'4'的有一个,结果为'6'的有两个)
 
// The `_.property` iteratee shorthand.
_.countBy(['one', 'two', 'three'], 'length');
// => { '3': 2, '5': 1 }
  

2..every(collection, [predicate=.identity])
遍历传入的集合,如果所有值都符合传入的条件,则返回true,否则返回false。一旦遇到不符合规则的入参,则直接返回false并停止执行。

collection (Array|Object): 待遍历的集合(可以是数组或对象).
[predicate=_.identity] (Function): 对每个值进行调用的函数.

例:
_.every([true, 1, null, 'yes'], Boolean);
// => false
 
var users = [
  { 'user': 'barney', 'age': 36, 'active': false },
  { 'user': 'fred',   'age': 40, 'active': false }
];
 
_.every(users, { 'user': 'barney', 'active': false });
// => false
 
_.every(users, ['active', false]);
// => true
 
_.every(users, 'active');
// => false
  1. .filter(collection, [predicate=.identity])
    通过处理函数遍历整个集合,用处理函数对集合进行删选,返回一个新的数组,请注意这个方法的返回值是一个数组

collection (Array|Object): 待遍历的集合(可以是数组或对象).
[predicate=_.identity] (Function): 对每个值进行调用的函数.

例:
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 }]
 
_.filter(users, { 'age': 36, 'active': true });
// =>  [ { 'user': 'barney', 'age': 36, 'active': true }]
 
_.filter(users, ['active', false]);
// =>  [{ 'user': 'fred',   'age': 40, 'active': false }]
 
_.filter(users, 'active');
// => [ { 'user': 'barney', 'age': 36, 'active': true }]

4..find(collection, [predicate=.identity], [fromIndex=0])

通过处理函数对集合中的每个值进行处理,返回第一个符合的元素。

collection (Array|Object): 待遍历的集合(可以是数组或对象).
[predicate=_.identity] (Function): 对每个值进行调用的函数.
[fromIndex=0] (number): 筛选的七点索引.

例:
var users = [
  { 'user': 'barney',  'age': 36, 'active': true },
  { 'user': 'fred',    'age': 40, 'active': false },
  { 'user': 'pebbles', 'age': 1,  'active': true }
];
 
_.find(users, function(o) { return o.age < 40; });
// => [
  { 'user': 'barney',  'age': 36, 'active': true },
  { 'user': 'fred',    'age': 40, 'active': false },
  { 'user': 'pebbles', 'age': 1,  'active': true }
];
 
_.find(users, { 'age': 1, 'active': true });
// => { 'user': 'pebbles', 'age': 1,  'active': true }
 
_.find(users, ['active', false]);
// => { 'user': 'fred',    'age': 40, 'active': false },

_.find(users, 'active');
// =>{ 'user': 'barney',  'age': 36, 'active': true },

5..findLast(collection, [predicate=.identity], [fromIndex=collection.length-1])

这个方法和_.find相似,区别是从右向左进行查找。

相关文章

网友评论

  • a06037c9c4d2:_.find的第一个例子输出值错误,只返回第一恶符合条件的object@紫薯丸子爱大宝贝
  • 蓝风衫:lodash?

本文标题:陪你读一遍loadsh (四)

本文链接:https://www.haomeiwen.com/subject/jmkacxtx.html