数组
1、_chunk
将数组(array)拆分成多个 size
长度的区块,并将这些区块组成一个新数组。 如果array
无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。(相当于一个二维数组)
_.chunk(array, [size=1])
例:
_.conpact(array);
import _ from 'lodash'; 例: let arr = [1,2,3,4,'a',5,6,4,5]; let newArr = _.chunk(arr,2); console.log(newArr);//[[1,2],[3,4],['a',5],[6,4],[5]];
2、_.compact
创建一个新数组,包含愿数组中所有的非假值元素,其中 undefined、null、NaN、false、0、"" 这些都被认为是‘假值’。只针对一维数组
arr = [1,'a',undefined,4,false,'测试',NaN, '',0]; newArr = _.compact(arr); console.log(newArr);//[1,'a',4,'测试']
3、_.concat
创建一个新数组,将array与任何数组或值连接起来
let arr = [1,2]; let other = _.concat(arr,3,[4],{num:5},[[6]]); console.log(other);//[1,2,3,4,{name:5},[6]]
4、_.difference
创建一个具有唯一array
值的数组,每个值不包含在其他给定的数组中。(注:即创建一个新数组,这个数组中的值,为第一个数字(array
参数)排除了给定数组中的值。)该方法使用SameValueZero
做相等比较。结果值的顺序是由第一个数组中的顺序确定。
参数: 1、array (Array): 要检查的数组。 2、[values] (...Array): 排除的值。 _.difference(array, [values])
例: let arr = [1,2]; let diffArr = [1,8]; let newArr = _difference(arr,diffArr); console.log(newArr);//[2]
5、_.differenceBy
这个方法类似_.difference
,除了它多接受一个 iteratee
(注:迭代器), 调用array
和 values
中的每个元素以产生比较的标准。 结果值是从第一数组中选择。iteratee 会调用一个参数:(value)。(注:首先使用迭代器分别迭代array
和 values
中的每个元素,返回的值作为比较值),该api如果不传iteratee迭代器,则与_.difference等同
let arr = [3.1,5.3,2,4,6.1]; let valArr = [3.2,6]; let newArr = _.differenceBy(arr, valArr, Math.floor); console.log(newArr);//[5.3,2,4]
6、_.differenceWith
这个方法类似_.difference
,除了它接受一个 comparator
(注:比较器 _.isEqul(val,otherval)),它调用比较array
,values
中的元素。 结果值是从第一数组中选择。comparator 调用参数有两个:(arrVal, othVal)
<_isEqual:是进行对两个值执行深度比较来确定这个两个值是否相等
注意:_isEqual 方法支持比较arrays, array buffers(ArrayBuffer
对象用来表示通用的、固定长度的原始二进制数据缓冲区), booleans, date objects, error objects, maps, numbers, `Object` objects, regexes, sets, strings, symbols, typed arrays。Object对象会比较它们自身非继承可枚举的属性。不支持function和DOM节点的比较>
参数: array (Array): 用来检查的数组 [values] (...Array): 用来排除的数组 [comparator] (Function): 比较array和values元素值的方法 _.differenceWith(array, [values], [comparator]) 例: let arr = [{ name: 'Tom', code: 0 },{ name: 'jerry', code: 1, list: [{ name: 'hello' }] }]; let equalArr = [{ name: 'jerry', code: 1, list: [{ name: 'hello' }] }]; let newArr = _.differenceWith(arr, equalArr, _.isEqual); console.log(newArr);//[{name: 'Tom',code: 0}]
7、_.drop
创建一个切片数组,去除array前面的n个元素(n默认为1)
参数: array (Array): 要查询的数组。 [n=1] (number): 要去除的元素个数。 _.drop(array,[n = 1]);
let arr = [1,2,3,4,5,6];
console.log(_.drop(arr));//[2,3,4,5,6]--默认n为1
console.log(_.dropRight(arr,5));//[6]
console.log(_.dropRight(arr,9));//[]
8、_.dropRight
创建一个切片数组,同_.drop的用法相同,不同之处在于,去除array尾部n个元素 (n默认为1)
参数: array (Array): 要查询的数组。 [n=1] (number): 要去除的元素个数。 _.dropRight(array,[n = 1]); let arr = [1,2,3,4,5,6]; console.log(_.dropRight(arr));//[2,3,4,5,6]--默认n为1 console.log(_.dropRight(arr,5));//[6] console.log(_.dropRight(arr,9));//[]