Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。
$ npm i --save lodashimport * as _ from 'lodash'
常用方法
一、数组
1、数组分割(chunk)
将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。_.chunk(['a', 'b', 'c', 'd'], 2);// => [['a', 'b'], ['c', 'd']]_.chunk(['a', 'b', 'c', 'd'], 3);// => [['a', 'b', 'c'], ['d']]
2、对数组值进行过滤(difference)
_.differenceBy(array, [values], [iteratee=_.identity])参数array (Array): 要检查的数组。[values] (...Array): 排除的值。[iteratee=_.identity] (Array|Function|Object|string): iteratee 调用每个元素。
创建一个具有唯一array值的数组,每个值不包含在其他给定的数组中。_.difference([3, 2, 1], [4, 2]);// => [3, 1]_.differenceBy([3.1, 2.2, 1.3], [4.4, 2.5], Math.floor);// => [3.1, 1.3]// The `_.property` iteratee shorthand._.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');// => [{ 'x': 2 }]
3、二维数组转换为对象(fromPairs)
根据二维数组返回一个由键值对pairs构成的对象。_.fromPairs([['fred', 30], ['barney', 40]]);// => { 'fred': 30, 'barney': 40 }
4、排序并去重(sortedUniq)
这个方法类似_.uniq,除了它会优化排序数组。_.sortedUniq([1, 1, 2]);// => [1, 2]_.uniq([2, 1, 2]);// => [2, 1]
5、去重(uniqBy)
1.引入import _ from 'lodash';2.代码:[此处以id来作为去重的判断]let data = [...arrA, ...arrB];data = _.uniqBy(data, 'id');console.log(data)let y = ( [{'x':2 }, { 'x':2 }, { 'x':1 }]);let gfg = _.uniqBy(y, 'x');console.log(gfg); // [ { 'x':2 }, { 'x':1 } ]
二、集合
1、遍历并返回映射(map)
创建一个数组, value(值) 是 iteratee(迭代函数)遍历 collection(集合)中的每个元素后返回的结果。 iteratee(迭代函数)调用3个参数: (value, index|key, collection).function square(n) {return n * n;}_.map([4, 8], square);// => [16, 64]_.map({ 'a': 4, 'b': 8 }, square);// => [16, 64] (iteration order is not guaranteed)var users = [{ 'user': 'barney' },{ 'user': 'fred' }];// The `_.property` iteratee shorthand._.map(users, 'user');// => ['barney', 'fred']
2、返回随机元素值(sample)
从collection(集合)中获得一个随机元素。_.sample([1, 2, 3, 4]); // => 2
3、返回一个组成聚合的对象(groupBy)
创建一个对象,key 是 iteratee 遍历 collection(集合) 中的每个元素返回的结果。 分组值的顺序是由他们出现在 collection(集合) 中的顺序确定的。每个键对应的值负责生成 key 的元素组成的数组_.groupBy([6.1, 4.2, 6.3], Math.floor);// => { '4': [4.2], '6': [6.1, 6.3] }// The `_.property` iteratee shorthand._.groupBy(['one', 'two', 'three'], 'length');// => { '3': ['one', 'two'], '5': ['three'] }
4、返回排序后的新数组(orderBy/sortBy)
var users = [{ 'user': 'fred', 'age': 48 },{ 'user': 'barney', 'age': 34 },{ 'user': 'fred', 'age': 40 },{ 'user': 'barney', 'age': 36 }];// 以 `user` 升序排序 再 `age` 以降序排序。_.orderBy(users, ['user', 'age'], ['asc', 'desc']);// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]var users = [{ 'user': 'fred', 'age': 48 },{ 'user': 'barney', 'age': 36 },{ 'user': 'fred', 'age': 40 },{ 'user': 'barney', 'age': 34 }];_.sortBy(users, function(o) { return o.user; });// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]_.sortBy(users, ['user', 'age']);// => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]_.sortBy(users, 'user', function(o) {return Math.floor(o.age / 10);});// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
5、返回元素分组后的数组(partition)
var users = [{ 'user': 'barney', 'age': 36, 'active': false },{ 'user': 'fred', 'age': 40, 'active': true },{ 'user': 'pebbles', 'age': 1, 'active': false }];_.partition(users, function(o) { return o.active; });// => objects for [['fred'], ['barney', 'pebbles']]// The `_.matches` iteratee shorthand._.partition(users, { 'age': 1, 'active': false });// => objects for [['pebbles'], ['barney', 'fred']]// The `_.matchesProperty` iteratee shorthand._.partition(users, ['active', false]);// => objects for [['barney', 'pebbles'], ['fred']]// The `_.property` iteratee shorthand._.partition(users, 'active');// => objects for [['fred'], ['barney', 'pebbles']]
三、函数
1、
