lodash
和underscore
是现在非常流行的两个javascript
库,提供了一套函数式编程的实用功能。lodash
是一套工具库,内部封装了很多字符串、数组、对象等常见数据类型的处理函数。
下面介绍一下常用的函数
_.chunk(array, [size=1])
定义
将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。
参数
array (Array): 需要处理的数组
[size=1] (number): 每个数组区块的长度
返回
(Array): 返回一个包含拆分区块的新数组(相当于一个二维数组)。
示例
_.chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]
_.chunk(['a', 'b', 'c', 'd'], 3);
// => [['a', 'b', 'c'], ['d']]
_.compact(array)
定义
创建一个新数组,包含原数组中所有的非假值元素。例如false, null, 0, "", undefined, 和 NaN 都是被认为是“假值”。
参数
array (Array): 待处理的数组
返回
(Array): 返回过滤掉假值的新数组
示例
_.compact([0, 1, false, 2, '', 3]);
// => [1, 2, 3]
_.drop(array, [n=1])
定义
创建一个切片数组,去除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]
_.indexOf(array, value, [fromIndex=0])
定义
返回首次 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
_.uniq(array)
定义
创建一个去重后的array数组副本。只有第一次出现的元素才会被保留。
参数
array (Array): 要检查的数组。
返回
(Array): 返回新的去重后的数组。
示例
_.uniq([2, 1, 2]);
// => [2, 1]
_.filter(collection, [predicate=_.identity])
定义
遍历 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');
_.reject(collection, [predicate=_.identity])
定义
_.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']
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。