lodash
和underscore
是如今很是流行的两个javascript
库,提供了一套函数式编程的实用功能。lodash
是一套工具库,内部封装了不少字符串、数组、对象等常见数据类型的处理函数。javascript
下面介绍一下经常使用的函数java
定义编程
将数组(array)拆分红多个 size 长度的区块,并将这些区块组成一个新数组。 若是array 没法被分割成所有等长的区块,那么最后剩余的元素将组成一个区块。数组
参数ide
array (Array): 须要处理的数组
[size=1] (number): 每一个数组区块的长度函数式编程
返回函数
(Array): 返回一个包含拆分区块的新数组(至关于一个二维数组)。工具
示例code
_.chunk(['a', 'b', 'c', 'd'], 2); // => [['a', 'b'], ['c', 'd']] _.chunk(['a', 'b', 'c', 'd'], 3); // => [['a', 'b', 'c'], ['d']]
定义对象
建立一个新数组,包含原数组中全部的非假值元素。例如false, null, 0, "", undefined, 和 NaN 都是被认为是“假值”。
参数
array (Array): 待处理的数组
返回
(Array): 返回过滤掉假值的新数组
示例
_.compact([0, 1, false, 2, '', 3]); // => [1, 2, 3]
定义
建立一个切片数组,去除array前面的n个元素。(n默认值为1。)
参数
array (Array): 要查询的数组。
[n=1] (number): 要去除的元素个数。
返回
(Array): 返回array剩余切片。
示例
_.drop([1, 2, 3]); // => [2, 3] _.drop([1, 2, 3], 2); // => [3] _.drop([1, 2, 3], 5); // => [] _.drop([1, 2, 3], 0); // => [1, 2, 3]
定义
返回首次 value 在数组array中被找到的 索引值, 若是 fromIndex 为负值,将从数组array尾端索引进行匹配。
参数
array (Array): 须要查找的数组。
value (*): 须要查找的值。
[fromIndex=0] (number): 开始查询的位置。
返回
(number): 返回 值value在数组中的索引位置, 没有找到为返回-1。
示例
_.indexOf([1, 2, 1, 2], 2); // => 1 // Search from the `fromIndex`. _.indexOf([1, 2, 1, 2], 2, 2); // => 3
定义
建立一个去重后的array数组副本。只有第一次出现的元素才会被保留。
参数
array (Array): 要检查的数组。
返回
(Array): 返回新的去重后的数组。
示例
_.uniq([2, 1, 2]); // => [2, 1]
定义
遍历 collection(集合)元素,返回 predicate(断言函数)返回真值 的全部元素的数组。 predicate(断言函数)调用三个参数:(value, index|key, collection)。
参数
collection (Array|Object): 一个用来迭代的集合。
[predicate=_.identity] (Array|Function|Object|string): 每次迭代调用的函数。
返回
(Array): 返回一个新的过滤后的数组。
示例
var users = [ { 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false } ]; _.filter(users, function(o) { return !o.active; }); // => objects for ['fred'] // The `_.matches` iteratee shorthand. _.filter(users, { 'age': 36, 'active': true }); // => objects for ['barney'] // The `_.matchesProperty` iteratee shorthand. _.filter(users, ['active', false]); // => objects for ['fred'] // The `_.property` iteratee shorthand. _.filter(users, 'active');
定义
_.filter的反向方法;此方法 返回 predicate(断言函数) 不 返回 true(真值)的collection(集合)元素(非真)。
参数
collection (Array|Object): 用来迭代的集合。
[predicate=_.identity] (Array|Function|Object|string): 每次迭代调用的函数。
返回
(Array): 返回过滤后的新数组
示例
var users = [ { 'user': 'barney', 'age': 36, 'active': false }, { 'user': 'fred', 'age': 40, 'active': true } ]; _.reject(users, function(o) { return !o.active; }); // => objects for ['fred'] // `_.matches` 迭代简写 _.reject(users, { 'age': 40, 'active': true }); // => objects for ['barney'] // `_.matchesProperty` 迭代简写 _.reject(users, ['active', false]); // => objects for ['fred'] // `_.property` 迭代简写 _.reject(users, 'active'); // => objects for ['barney']