1

lodashunderscore是现在非常流行的两个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']

前端森林
2.4k 声望13.2k 粉丝

引用和评论

0 条评论