3

一. lodash介绍

是什么?

lodash是一个JavaScript语言的工具库,内部封装了很多字符串、数组、对象等常见数据类型的处理函数。

安装

官方网站 (最权威最正确的就是查看官方网站)中分别详细的介绍了 browser npm node.js 的安装方法。

TypeScript中使用loadsh

不是必要但推荐安装@types/lodash,该包包含类型定义,因此您的编译器可以巧妙地提示您,您将能够严格定义参数等类型。

note! @types/lodash包的版本需要和您项目中的typeScript 的版本对应兼容,否则编译器可能会报类似下图中的错误, 安装时指定版本可避免一些出错 npm安装@types/lodash
image.png

二. lodash中提供的函数

note!:lodash的所有函数都不会在原有的数据上进行操作,而是复制出一个新的数据而不改变原有数据,返回的结果是新数据。

下面是对lodash中的部分函数进行举例讲解。

Array Methods

_.chunk(array, [size=1]) 对数组进行分块
参数 array: 要分块的数据 size: 分块的大小[size选填 如果不填默认值为1]

const array = ['a', 'b', 'c', 'd'];
const chunk = _.chunk(['a', 'b', 'c', 'd'], 3);
console.log(array); 
// => ['a', 'b', 'c', 'd']
console.log(chunk);
// => [['a', 'b', 'c'], ['d']]

image.png

_.uniq(array) 对array数组进行去重

_.uniq([2, 1, 2]);
// => [2, 1]

_.uniqBy(array, [iteratee=_.identity])
参数[iteratee=_.identity] (Function): 迭代器调用每个元素的执行的函数。

const uniqBy1 = _.uniqBy([2.1, 2.1, 2.3], _.identity);
// => [2.1, 2.3]

// 使用_.identity作为iteratee(即,直接比较对象,但对象引用不同,所以都会被视为不同)  
const uniqBy2 = _.uniqBy([{ x: 1 }, { x: 2 }, { x: 1 }], _.identity);
// => [{ x: 1 }, { x: 2 }, { x: 1 }]

// 下面两种方法效果相同,只是写法不同
const uniqBy3 = _.uniqBy([{ x: 1 }, { x: 2 }, { x: 1 }], 'x');
// => [{ x: 1 }, { x: 2 }]

const uniqBy4 = _.uniqBy([{ x: 1 }, { x: 2 }, { x: 1 }], (object) => {
  return object.x;
});
// => [{ x: 1 }, { x: 2 }]

Collection Methods

_.groupBy(collection, [iteratee=_.identity]) 对集合进行分组

_.groupBy([6.1, 4.2, 6.3], Math.floor);
// => { 4: [4.2], 6: [6.1, 6.3] }

const users = [
  {name: 'zhangsan', age: 17},
  {name: 'lisi', age: 16},
  {name: 'wang', age: 18},
  {name: 'liu', age: 17},
] as {name: string, age: number}[];
_.groupBy(users, 'age');
// => { 16: [{name: 'lisi', age: 16}], 17: [{name: 'zhangsan', age: 17}, {name: 'liu', age: 17}], 18: [{name: 'wang', age: 18}] }

Date Methods

_.now() 用于获取当前时间的 Unix 时间戳

_.now();
// => 1728804822221

Function Methods

_.delay(func, wait, [args]) 等待一段时间后,在执行某个函数。
参数: func 控制执行时间的函数 wait 控制时间在多少毫秒后执行 args是func的参数。

_.delay((args) => { console.log('5 毫秒后的时间', _.now(), 'args:' + args); }, 5, 'this is args');
console.log(_.now());
// 1728805498795
// 5 毫秒后的时间 1728805498853 args:this is args

_.debounce(func, [wait=0], [options={}]) 创建一个防抖函数,只有在指定时间内的最后一次调用会生效。

Object Methods

    const users = {
      barney:  { age: 36, active: true },
      fred:    { age: 40, active: false },
      pebbles: { age: 1,  active: true }
    };

    _.findKey(users, (o) => o.age < 40);
    // => barney

    // The `_.matches` iteratee shorthand.
    _.findKey(users, { age: 1, active: true });
    // => pebbles

.....更多未涉及到的方法请移步https://lodash.com/docs/4.17.15

最后
希望这篇文章能对您带来帮助!了解lodash库,若遇到操作数组,对象,集合,函数时,能够想起lodash中已提供了方法,便于更快解决遇到的问题。


吴季分
350 声望12 粉丝

引用和评论

0 条评论