1、数组
数组切割
_.chunk(array, [size=1]) 将数组拆分为多个size长度的区块,返回新数组
_.chunk([a,b,c,d,e], 2)
=> [[a,b],[c,d],[e]]
数组拼接
_.concat(arrays, [values])
区别array的concat;此方法可与任何数组/数值拼接; array仅可将多个数组拼接; 均返回新数组
const array = [1];
let other = _.concat(array, 2, [3], [[4]]);
console.log(other);
// => [1, 2, 3, [4]]
console.log(array);
// => [1]
取数组差值
取数组一相对于数组二的差值
_.difference(array, [values]) 普通数组求差值; 返回新数组
_.differenceWith(array, [values], [comparator]) 对象数组求差值; 返回新数组
_.pullAll(array, [values]) 同 _.difference(array, [values])
_.pullAllWith(array, [values], [comparator]) 同 _.differenceWith(array, [values], [comparator])
区别
pull方法均会改变原数组, difference 返回新数组
_.difference([3, 2, 1], [4, 2]);
// => [3, 1]
let objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
_.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
// => [{ 'x': 2, 'y': 1 }]
取两个数组交集
_.xor([arrays])
_.xorWidth([arrays], [comparator])
_.xor([2, 1], [2, 3]);
// => [1, 3]
let objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
let others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.xorWith(objects, others, _.isEqual);
// => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
取数组交集
_.intersection(array) 普通数组求交集; 返回新数组
_.intersectionWith(array, [comparator]) 对象数组求交集; 返回新数组
_.intersection([2, 1], [4, 2], [1, 2]);
// => [2]
let objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
let others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.intersectionWith(objects, others, _.isEqual);
// => [{ 'x': 1, 'y': 2 }]
数组转对象
_.fromPairs(pairs) 返回新对象
_.fromPairs([['fred', 30], ['barney', 40]]);
// => { 'fred': 30, 'barney': 40 }
数组去重
_.uniq(array)
_.uniqBy(array, [iteratee=_.identity])
_.uniqWith(array, [comparator])
_.uniq([2, 1, 2]);
// => [2, 1]
_.uniqBy([2.1, 1.2, 2.3], Math.floor);
// => [2.1, 1.2]
let objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.uniqWith(objects, _.isEqual);
// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]