Lodash https://www.lodashjs.com/docs/lodash.chunk
1.安装
$ npm i -g npm
$ npm i --save lodash
2.lodash的好处
Lodash通过array、number、objects、string等等的使用难度从而让javaScript变得简单。
Lodah的模块化方法非常适用于:
遍历array、object和string
对值进行操作和检测
创建符合功能的函数
3.数组Array
1)_.chunk(array,[size=1])
将数组(array)拆分成多个size长度的区块,并将这些区块组成一个新数组。如果array无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。
2) _.compact(array)
创建一个新数组,包含原数组中所有的非假值元素。例如,false,null,0,””,undefined和NaN都是被 认为是”假值”。
3)_.concat(array,[values])
创建一个新数组,将array与任何数组或值连接在一起。
4)_.difference(array,[values])
创建一个具有唯一array值的数组,每个值不包含在其他给定的数组中。
5).differenceBy(array,[value],[iteratee=.identity])
该方法类似_.difference,除了它接受一个iteratee,调用array和values中的每个元素以产生比较的标准。结果只是从第一个数组中选择。
6)_.differenceWith(array,[values],[comparator])
该方法类似_.difference,除了它接受一个comparator(比较器),它调用比较array,values中的元素。
7)_.drop(array,[n=1])
创建一个切片数组,去除array前面的n个元素。(n默认值为1)
8)_.dropRight(array,[n=1])
创建一个切片数组,去除array尾部的n个元素。
9).dropRightWhile(array,[predicate=.identity])
创建一个切片数组,去除array中从predicate返回假值开始到尾部的部分。
10).dropWhile(array,[predicate=.identity])
创建一个切片数组,去除array中从起点开始到predicate返回假值结束部分。
11)_.fill(array,value,[start=0],[end=array.length])
使用value值来填充(替换)array,从start位置开始,到end位置结束(但不包含end位置)
12).findIndex(array,[predicate=.identity],[formIndex=0])
该方法类似_.find,区别是该方法返回第一个通过predicate判断为真值的元素的索引值(index),而不是元素本身。
13).findLastIndex(array,[predicate=.identity],[fromIndex=array.length-1])
这个方法类似_.findIndex,区别是它是从右到左的迭代集合array中的元素。
14)_.head(array)
获取数组array的第一个元素
15)_.flatten(array)
减少一级array的嵌套深度。
16)_.flattenDeep(array)
将array递归为一维数组
17)_.flattenDepth(array,[depth=1])
根据depth递归减少array的嵌套层级
18)_.fromPairs(pairs)
与_.toPairs 正好相反,这个方法返回一个由键值对pairs构成的对象。
19)_.indexOf(array,value,[fromIndex=0])
使用SameValueZero等值比较,返回首次value在数组array中被找到的索引值,如果fromIndex为负值,将从数组array尾端索引进行匹配
获取数组array中除了最后一个元素之外的所有元素
21)_.intersection([arrays])
创建唯一值的数组,这个数组包含所有给定数组都包含的元素,使用SameValueZero进行相等性比较(可以理解为给定数组的交集)
22).intersectionBy([arrays],[iteratee=.identity])
这个方法类似_.intersection,区别是它接受一个iteratee调用每一个arrays的每个值产生一个值,通过产生的值进行了比较。结果值是从第一个数组中选择。
23)_.intersectionWith([arrays],[comparator])
这个方法类似_.intersection,区别是它接受一个comparator调用比较arrays中的元素。结果值是从第一个数组中选择。
24)_.join(array,[separator=’,’])
将数组array中的所有元素转换为由separator分隔的字符串。
25)_.last(array)
获取array中的最后一个元素。
26)_.lastIndexOf(array,value,[fromIndex=array.length-1])
这个方法类似_.indexOf,区别是它葱油到左遍历array的元素。
27)_.nth(array,[n=0])
获取array数组的第n个元素。如果n为负数,则返回从数组结尾开始的第n个元素。
28)_.pull(array,[values])
移除数组array中的所有和给定值相等的元素,使用SameValueZero进行全等比较。
29)_.pullAll(array,values)
这个方法类似_.pull,区别是这个方法接收一个要移除值的数组。
30).pullAllBy(array,values,[iteratee=.identity])
这个方法类似于_.pullAll,区别是这个方法接受一个iteratee调用array和values的每个值以产生一个值,通过产生的值进行比较。
31)_.pullAllWith(array,values,[comparator])
这个方法类似于_.pullAll,区别是这个方法接受comparator调用array中的元素和values比较。
32)_.pullAt(array,[indexes])
根据索引indexes,移除array中对应的元素,并返回被移除元素的数组。
33).remove(array,[predicate=.identity])
移除数组中的predicate返回为真值的所有元素,并返回移除元素组成的数组。
34)_.reverse(array)
反转array,使得第一个元素变为最后一个元素,第二个元素变为倒数第二个元素,依次类推。
35)_.slice(array,[start=0],[end=array.length])
裁剪数组array,从start位置开始到end结束,但不包含end本身的位置。
36)_.sortedIndex(array,value)
使用二进制的方式检索来决定value值应该插入到数组中尽可能小的索引位置。以保证array的排序。
37).sortedIndexBy(array,value,[iteratee=.identity])
这个方法类似_.sortedIndex,除了它接受一个iteratee(迭代函数),调用每一个数组元素,返回结果和value值比较来计算排序。
38)_.sortedIndexOf(array,value)
这个方法类似_.indexOf,除了它是在已经排序的数组array上执行二进制检索
39)_.sortedLastIndex(array,value)
此方法类似于_.sortedIndex,除了它返回value值在array中尽可能大的索引位置
40).sortedLastIndexBy(array,value,[iteratee=.identity])
此方法类似_.soretedLastIndex,除了它接受一个iteratee,调用每一个数组元素,返回结果和value值比较计算排序。
41)_.sortedLastIndexOf(array,value)
此方法类似_.lastIndeOf,除了它是在已经排序的数组array上执行二进制检索。
42)_.sortedUniq(array)
这个方法类似_.uniq,除了它会优化排序数组。
43)_.sortedUniqBy(array,[iteratee])
这个方法类似_.uniqBy,除了它会优化排序数组。
44)_.tail(array)
获取除了array数组第一个元素以外的全部元素。
45)_.take(array,[n=1])
创建一个数组切片,从array数组起始元素开始提取n个元素。
46)_.takeRight(array,[n=1])
创建一个数组切片,从array数组的最后一个元素开始提取n个元素。
47).takeRightWhile(array,[predicate=.identity])
从array数组的最后一个元素开始提取元素,知道predicate返回假值。
48)takeWhile(array,[predicate=_.identity])
从array数组的起始元素开始提取元素,直到predicate返回假值。
49)_.union([arrays])
创建一个按顺序排列的唯一值的数组。所有给定数组的元素的元素值使用SameValueZero做等值比较。
50).unionBy([arrays],[iteratee=.identity])
这个方法类似_.union,除了它接受一个iteratee,调用每一个数组的每个元素以产生唯一性计算的标准。
51)_.unionWith([arrays],[comparator])
这个方法类似_.union,除了它接受一个comparator调用比较arrays数组的每一个元素。
52)_.uniq(array)
创建一个去重后的array数组副本,使用了SameValueZero做等值比较。只有第一次出现的元素才会被保留。
4.Lang
(1)_.castArray(value)
如果value不是数组,那么强制转换为数组
(2)_.clone(value)
创建一个value的浅拷贝,(浅拷贝改变复制的数组,同时原来的数组也被改变)
(3)_.cloneDeep(value)
这个方法类似_.clone,除了它会递归拷贝value,(浅拷贝改变复制的数组,原来的数组不会改变)
(4)_.cloneDeepWith(value,[customizer])
这个方法类似_.cloneWith,除了它会递归克隆value
(5)_.cloneWith(value,[customizer])
这个方法类似_.clone,除了它接受一个customizer定制返回的克隆值。如果customizer返回undefined将会使用拷贝方法代替处理
(6)_.conformsTo(objects,source)
通过调用断言source的属性与object的相应属性值,检查object是否符合source。
(7)_.eq(value,other)
执行SameValueZero比较两者的值,来确定他们是否相等。
(8)_.gt(value,other)
检查value是否大于other
(9)_.gte(value,other)
检查value是否大于或者等于other
(10)_.isArguments(value)
检查value是否是一个类arguments对象
(11)_.isArray(value)
检查value是否是Array类对象
(12)_.isArrayBuffer(value)
检查value是否是ArrayBuffer对象
(13)_.isArrayLike(value)
检查value是否是类数组。如果一个值被认为是类数组,那么它2不是一个函数,并且value.length是一个整数,大于等于0,小于等于Number.MAX_SIZE_INTEGER
(14)_.isArrayLikeObject(value)
这个方法类似_.isArrayLike,除了它还检查value是否是个对象。
(15)_.isBoolean(value)
检查value是否是原始boolean类型或者对象
(16)_.isBuffer(value)
检查value是否是个buffer
(17)_.isDate(value)
检查value是否是date对象
(18)_.isElement(value)
检查value是否是可能是DOM元素
(19)_.isEmpty(value)
检查value是否为一个空对象,集合,映射或者set
(20)_.isEqual(value,other)
执行深比较来确定两者的值是否相等。
(21)_.isEqualWith(value,other,[customizer])
这个方法类似_.isEqual。除了它接受一个custmizer用来定制比较值。
(22)_.isError(value)
检查value是否是
Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, 或者 URIError对象。
(23)_.isFinite(value)
检查 value 是否是原始有限数值。
(24)_.isFunction(value)
检查value是否是Function对象
(25)_.isInteger(value)
检查value是否为一个整数。
(26)_.isLength(value)
检查value是否为有效的类数组长度
(27)_.isMap(value)
检查value是否为一个Map对象
(28)_.isMatch(objects,source)
执行一个深度比较,来确定object是否含有和source完全相等的属性值。
(29)_.isMatchWith(object,source,[customizer])
这个方法类似 _.isMatch。 除了它接受一个 customizer 定制比较的值。 如果 customizer 返回 undefined 将会比较处理方法代替。
(30)_.isNaN(value)
检查 value 是否是 NaN。
(31)_.isNative(value)
检查value是否是一个原生函数。