// 按照长度分割数组
_.chunk(['a', 'b', 'c', 'd'], 2); // [['a', 'b'], ['c', 'd']]
_.chunk(['a', 'b', 'c', 'd'], 3); // [['a', 'b', 'c'], ['d']]
// 创建一个删除 falsey 的数组
_.compact([0, 1, false, 2, '', 3]) // [1, 2, 3]
// 创建一个用于相等比较的数组,值由第一个数组决定
_.difference([1, 2], [2, 3]) // [1]
// 创建一个数组,第一个数组不存在于比较数组的元素
let objects = [{'x': 1, 'y': 2}, {'x': 2, 'y': 1}]
_.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual) // [{'x': 2, 'y': 1}]
// 二维数组转对象
_.fromPairs([['a', 1], ['b', 2]]) // {a: 1, b: 2}
// map => array => object
// 获取数组除了最后一个元素的全部元素
_.initial([1, 2, 3]) // [1, 2]
// 获取数组除了第一个元素的全部元素
_.tail([1, 2, 3]) // [2, 3]
// 获取多个数组的交集
_.intersection([2, 1], [2, 3]) // [2]
let users1 = [
{ 'user': 'barney', 'active': false },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': true }
];
let users2 = [
{ 'user': 'barney1', 'active': false },
{ 'user': 'fred', 'active': true },
{ 'user': 'pebbles', 'active': true }
];
let users3 = [
{ 'user': 'barney2', 'active': false },
{ 'user': 'fred', 'active': true },
{ 'user': 'pebbles', 'active': true }
];
_.intersectionWith(user1, user2, user3, _.isEqual) // [{'user': 'pebbles', 'active': true}]
// 数组的最后一个元素
_.last([1, 2, 3]) // 3
// 删除元素
let eleList = ['a', 'b', 'c', 'a', 'b', 'c'];
_.pull(eleList, 'a', 'c') // ['b', 'b']
// 删除数组中的元素
_.pullAll(eleList, ['a', 'c']) // ['b', 'b']
// 删除数组中的对象元素
let objList = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
_.pullAll(objList, [{ 'x': 1 }, { 'x': 3 }], 'x') // [{'x': 2}]
// 根据数组索引删除数组
let array = ['a', 'b', 'c', 'd']
let pulled = _.pullAt(array, [1, 3])
// array ['a', 'c']
// pulled ['b', 'd']
let array = [1, 2, 3, 4]
let evens = _.remove(array, v => v % 2 === 0)
console.log(array) // [1, 3]
console.log(evens) // [2, 4]
// 数组颠倒
let array = [1, 2, 3]
_.reverse(array) // [3, 2, 1]
// 取按排序后的数组,每个类型的第一个值
_.sortedUniqBy([ 3.0, 1.1, 2.3, 2.4, 3.1, 3.6, 1.2].sort(), Math.floor) // [1.1, 2.3, 3]
// 获取根据个数获取元素
let arr = [1, 2, 3, 4]
_.take(arr) // [1]
_.take(arr, 2) // [1, 2]
_.takeRight(arr) // [4]
_.takeRight(arr, 2) // [3, 4]
_.union([2], [1, 2]) // [2, 1]
_.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x') // [{'x': 1}, {x: 2}]
多数组整合
let arr1 = ['a', 'b']
let arr2 = [1, 2]
let arr3 = [true, false]
let zipped = _.zip(arr1, arr2, arr3) // [['a', 1, true], ['b', 2, false]]
_.unzip(zipped) // [['a', 'b'], [1, 2], [true, false]]
// 排除所有给定值
_.without([2, 1, 2, 3], 1, 2) // [3]
// 差集
_.xor([3, 2], [1, 3, 4, 5], [3, 6, 9]) // [2, 1, 4, 5, 6, 9]
let output = _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
return a + b + c;
});
// output [111, 222]
// 随机获取数组中的某个元素
_.sample([1, 2, 3, 4])
// 随机获取数组中的某个元素
_.sampleSize([1, 2, 3], 2) [1, 3]
// 洗牌数组
_.shuffle([1, 2, 3, 4])