- 安装
- 数组
- 查找下标 _.indexOf(array, value, [fromIndex=0])
- 拆分数组 _.chunk(array, [size=1])
- 删除 n 个 item _.drop(array, [deleteCount=1])
- 查找满足条件的 item 的 index .findIndex(array, [predicate=.identity], [fromIndex=0])
- 扁平化 _.flattenDeep(array)
- 删除数组中的最后一个元素_.initial(array)
- 去重 _.uniq(array)
- 去重 _.sortedUniq(array)
- 并集 _.union([arrays])
- 差集 _.xor([arrays])
- 数组转字符串 _.join(array, [separator=’,’])
- 获取数组中第 n 个 item _.nth(array, [n=0])
- 移除 _.pullAllWith(array, values, [comparator])
- 移除 _.pullAt(array, [indexes])
- 移除 .remove(array, [predicate=.identity])
- 截取 _.slice(array, [start=0], [end=array.length])
- 获取第二个及以后的所有 item _.tail(array)
- 截取 n 个 item _.take(array, [n=1])
- 删除 _.without(array, [values])
lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。
通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。或者说是 lodash 封装了很多 string、array、object 等常见数据类型的处理函数。
lodash 的模块化方法 非常适用于:
- 遍历 array、object 和 string
- 对值进行操作和检测
- 创建符合功能的函数
lodash 的全局对象是 _.
安装
- bootCND bootCND 搜索 “lodash” 拷贝地址
- 官网下载文件 lodash 中文文档
- npm
<!-- 留着偷懒直接复制粘贴 -->
<script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
数组
查找下标 _.indexOf(array, value, [fromIndex=0])
返回首次 value 在数组 array 中被找到的下标。
与之相似的是 _.lastIndexOf(array, value, [fromIndex=array.length-1]) 右到左遍历 array 的元素。_.indexOf([1, 2, 1, 2], 2); // 1
拆分数组 _.chunk(array, [size=1])
将 array 拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果 array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。很适合做发牌程序_.chunk(['a', 'b', 'c', 'd'], 2); // => [['a', 'b'], ['c', 'd']]
_.chunk(['a', 'b', 'c', 'd'], 3);// => [['a', 'b', 'c'], ['d']]
删除 n 个 item _.drop(array, [deleteCount=1])
创建一个切片数组,去除 array 前面的 n 个元素。
与之相似的还有 _.dropRight(array, [n=1]) 从右向左删。_.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]
查找满足条件的 item 的 index .findIndex(array, [predicate=.identity], [fromIndex=0])
返回找到元素的 index,否则返回 -1 ```jsx var users = [ { ‘user’: ‘barney’, ‘active’: false }, { ‘user’: ‘fred’, ‘active’: false }, { ‘user’: ‘pebbles’, ‘active’: true } ];
_.findIndex(users, function(o) { return o.user == ‘barney’; }); // => 0
_.findIndex(users, { ‘user’: ‘fred’, ‘active’: false }); // => 1
_.findIndex(users, [‘active’, false]); // => 0
_.findIndex(users, ‘active’); // => 2
与之相似的 _.findLastIndex(array, [predicate=_.identity], [fromIndex=array.length-1]) 从后向前查找。
<a name="ttF90"></a>
### 获取 array 中第一个 item _.head(array)
获取数组 array 的第一个元素。
```jsx
_.head([1, 2, 3]); // => 1
_.head([]); // => undefined
与之相似的是 _.last(array) 获取array中的最后一个元素
扁平化 _.flattenDeep(array)
将array递归为一维数组。
_.flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]
与之相似的 _.flattenDepth(array, [depth=1]) 根据传入的参数扁平化层级。
删除数组中的最后一个元素_.initial(array)
获取数组array中除了最后一个元素之外的所有元素。
_.initial([1, 2, 3]); // => [1, 2]
交集 _.intersection([arrays])
查找交集。
_.intersection([2, 1], [4, 2], [1, 2]); // => [2]
去重 _.uniq(array)
_.uniq([2, 1, 2]); // => [2, 1]
去重 _.sortedUniq(array)
_.sortedUniq([1, 1, 2]); // => [1, 2]
并集 _.union([arrays])
按顺序返回,返回数组的元素是唯一的。
_.union([2], [1, 2]); // => [2, 1]
差集 _.xor([arrays])
创建一个给定数组唯一值的数组。
_.xor([2, 1], [2, 3]); // => [1, 3]
数组转字符串 _.join(array, [separator=’,’])
将 array 中的所有元素转换为由 separator 分隔的字符串。类似于 join
_.join(['a', 'b', 'c'], '~'); // => 'a~b~c'
获取数组中第 n 个 item _.nth(array, [n=0])
获取array数组的第n个元素。
var array = ['a', 'b', 'c', 'd'];
_.nth(array, 1); // => 'b'
_.nth(array, -2); // => 'c';
移除 _.pullAllWith(array, values, [comparator])
接受 comparator 调用 array 中的元素和 values 比较。comparator 会传入两个参数:(arrVal, othVal)。会改变原数组。
var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
_.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
console.log(array); // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
移除 _.pullAt(array, [indexes])
根据索引 indexes,移除 array 中对应的元素,并返回被移除元素的数组。会改变原数组。
var array = [5, 10, 15, 20];
var evens = _.pullAt(array, 1, 3);
console.log(array); // => [5, 15]
console.log(evens); // => [10, 20]
移除 .remove(array, [predicate=.identity])
移除数组中 predicate(断言)返回为真值的所有元素,并返回移除元素组成的数组。predicate(断言) 会传入3个参数: (value, index, array)。会改变原数组。
var array = [1, 2, 3, 4];
var evens = _.remove(array, function(n) {
return n % 2 == 0;
});
console.log(array); // => [1, 3]
console.log(evens); // => [2, 4]
截取 _.slice(array, [start=0], [end=array.length])
获取第二个及以后的所有 item _.tail(array)
获取除了 array 第一个元素以外的全部元素。
_.tail([1, 2, 3]); // => [2, 3]
截取 n 个 item _.take(array, [n=1])
创建一个数组切片,从 array 的起始元素开始提取 n 个元素。
_.take([1, 2, 3]); // => [1]
_.take([1, 2, 3], 2); // => [1, 2]
_.take([1, 2, 3], 5); // => [1, 2, 3]
_.take([1, 2, 3], 0); // => []
与之相似的是 _.takeRight(array, [n=1]) 从后向前截取
删除 _.without(array, [values])
创建一个剔除所有给定值的新数组。
_.without([2, 1, 2, 3], 1, 2); // => [3]