Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。

lodash

  1. $ npm i --save lodash
  2. import * as _ from 'lodash'

常用方法

一、数组

1、数组分割(chunk)

  1. 将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。
  2. _.chunk(['a', 'b', 'c', 'd'], 2);
  3. // => [['a', 'b'], ['c', 'd']]
  4. _.chunk(['a', 'b', 'c', 'd'], 3);
  5. // => [['a', 'b', 'c'], ['d']]

2、对数组值进行过滤(difference)

  1. _.differenceBy(array, [values], [iteratee=_.identity])
  2. 参数
  3. array (Array): 要检查的数组。
  4. [values] (...Array): 排除的值。
  5. [iteratee=_.identity] (Array|Function|Object|string): iteratee 调用每个元素。
  1. 创建一个具有唯一array值的数组,每个值不包含在其他给定的数组中。
  2. _.difference([3, 2, 1], [4, 2]);
  3. // => [3, 1]
  4. _.differenceBy([3.1, 2.2, 1.3], [4.4, 2.5], Math.floor);
  5. // => [3.1, 1.3]
  6. // The `_.property` iteratee shorthand.
  7. _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
  8. // => [{ 'x': 2 }]

3、二维数组转换为对象(fromPairs)

  1. 根据二维数组返回一个由键值对pairs构成的对象。
  2. _.fromPairs([['fred', 30], ['barney', 40]]);
  3. // => { 'fred': 30, 'barney': 40 }

4、排序并去重(sortedUniq)

  1. 这个方法类似_.uniq,除了它会优化排序数组。
  2. _.sortedUniq([1, 1, 2]);
  3. // => [1, 2]
  4. _.uniq([2, 1, 2]);
  5. // => [2, 1]

5、去重(uniqBy)

  1. 1.引入
  2. import _ from 'lodash';
  3. 2.代码:[此处以id来作为去重的判断]
  4. let data = [...arrA, ...arrB];
  5. data = _.uniqBy(data, 'id');
  6. console.log(data)
  7. let y = ( [{'x':2 }, { 'x':2 }, { 'x':1 }]);
  8. let gfg = _.uniqBy(y, 'x');
  9. console.log(gfg); // [ { 'x':2 }, { 'x':1 } ]

二、集合

1、遍历并返回映射(map)

  1. 创建一个数组, value(值) iteratee(迭代函数)遍历 collection(集合)中的每个元素后返回的结果。 iteratee(迭代函数)调用3个参数: (value, index|key, collection).
  2. function square(n) {
  3. return n * n;
  4. }
  5. _.map([4, 8], square);
  6. // => [16, 64]
  7. _.map({ 'a': 4, 'b': 8 }, square);
  8. // => [16, 64] (iteration order is not guaranteed)
  9. var users = [
  10. { 'user': 'barney' },
  11. { 'user': 'fred' }
  12. ];
  13. // The `_.property` iteratee shorthand.
  14. _.map(users, 'user');
  15. // => ['barney', 'fred']

2、返回随机元素值(sample)

  1. collection(集合)中获得一个随机元素。
  2. _.sample([1, 2, 3, 4]); // => 2

3、返回一个组成聚合的对象(groupBy)

  1. 创建一个对象,key iteratee 遍历 collection(集合) 中的每个元素返回的结果。 分组值的顺序是由他们出现在 collection(集合) 中的顺序确定的。每个键对应的值负责生成 key 的元素组成的数组
  2. _.groupBy([6.1, 4.2, 6.3], Math.floor);
  3. // => { '4': [4.2], '6': [6.1, 6.3] }
  4. // The `_.property` iteratee shorthand.
  5. _.groupBy(['one', 'two', 'three'], 'length');
  6. // => { '3': ['one', 'two'], '5': ['three'] }

4、返回排序后的新数组(orderBy/sortBy)

  1. var users = [
  2. { 'user': 'fred', 'age': 48 },
  3. { 'user': 'barney', 'age': 34 },
  4. { 'user': 'fred', 'age': 40 },
  5. { 'user': 'barney', 'age': 36 }
  6. ];
  7. // 以 `user` 升序排序 再 `age` 以降序排序。
  8. _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
  9. // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
  10. var users = [
  11. { 'user': 'fred', 'age': 48 },
  12. { 'user': 'barney', 'age': 36 },
  13. { 'user': 'fred', 'age': 40 },
  14. { 'user': 'barney', 'age': 34 }
  15. ];
  16. _.sortBy(users, function(o) { return o.user; });
  17. // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
  18. _.sortBy(users, ['user', 'age']);
  19. // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
  20. _.sortBy(users, 'user', function(o) {
  21. return Math.floor(o.age / 10);
  22. });
  23. // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]

5、返回元素分组后的数组(partition)

  1. var users = [
  2. { 'user': 'barney', 'age': 36, 'active': false },
  3. { 'user': 'fred', 'age': 40, 'active': true },
  4. { 'user': 'pebbles', 'age': 1, 'active': false }
  5. ];
  6. _.partition(users, function(o) { return o.active; });
  7. // => objects for [['fred'], ['barney', 'pebbles']]
  8. // The `_.matches` iteratee shorthand.
  9. _.partition(users, { 'age': 1, 'active': false });
  10. // => objects for [['pebbles'], ['barney', 'fred']]
  11. // The `_.matchesProperty` iteratee shorthand.
  12. _.partition(users, ['active', false]);
  13. // => objects for [['barney', 'pebbles'], ['fred']]
  14. // The `_.property` iteratee shorthand.
  15. _.partition(users, 'active');
  16. // => objects for [['fred'], ['barney', 'pebbles']]

三、函数

1、