一. lodash介绍
是什么?
lodash是一个JavaScript语言的工具库,内部封装了很多字符串、数组、对象等常见数据类型的处理函数。
安装
官方网站 (最权威最正确的就是查看官方网站)中分别详细的介绍了 browser npm node.js 的安装方法。
TypeScript中使用loadsh
不是必要但推荐安装@types/lodash,该包包含类型定义,因此您的编译器可以巧妙地提示您,您将能够严格定义参数等类型。
note! @types/lodash包的版本需要和您项目中的typeScript 的版本对应兼容,否则编译器可能会报类似下图中的错误, 安装时指定版本可避免一些出错 npm安装@types/lodash
二. 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']]
_.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中已提供了方法,便于更快解决遇到的问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。