发布于2022-08-03 06:55 阅读(287) 评论(0) 点赞(7) 收藏(3)
Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。它内部封装了诸多对字符串、数组、对象等常见数据类型的处理函数,Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。
Lodash 简介 | Lodash 中文文档 | Lodash 中文网
- Array:适用于数组类型,比如填充数据、查找元素、数组分片等操作
-
- Collection:适用于数组和对象类型,部分适用于字符串,比如分组、查找、过滤等操作
-
- Function:适用于函数类型,比如节流、延迟、缓存、设置钩子等操作
-
- Lang:普遍适用于各种类型,常用于执行类型判断和类型转换
-
- Math:适用于数值类型,常用于执行数学运算
-
- Number:适用于生成随机数,比较数值与数值区间的关系
-
- Object:适用于对象类型,常用于对象的创建、扩展、类型转换、检索、集合等操作
-
- Seq:常用于创建链式调用,提高执行性能(惰性计算)
-
- String:适用于字符串类型

npm i -save lodash \\全局安装
2、按需引入了如下方法:
- 方法一:
-
- import _get from 'lodash/get'
- import _map from 'lodash/map'
- import _uniq from 'lodash/uniq'
- import _pick from 'lodash/pick'
- import _omit from 'lodash/omit'
- import _isNaN from 'lodash/isNaN'
- import _property from 'lodash/property'
- import _findIndex from 'lodash/findIndex'
- import _isUndefined from 'lodash/isUndefined'
- import _isString from 'lodash/isString'
- import _debounce from 'lodash/debounce'
-
-
- 方法二:
-
- import {debounce, isString, isUndefined, isNaN, map} from 'lodash'

含义:将数组(array)拆分成多个 size
长度的区块,并将这些区块组成一个新数组。
例子:
- _.chunk(['a', 'b', 'c', 'd'], 2);
- // => [['a', 'b'], ['c', 'd']]
-
- _.chunk(['a', 'b', 'c', 'd'], 3);
- // => [['a', 'b', 'c'], ['d']]
@description 返回指定对象的 key 的值的数组,支持多层属性嵌套获取,如:obj.x.y.z,快速获取数组内需要的key值数组
@param {Array} [objects] 目标对象
- var objects = [
- { 'a': { 'b': { 'c': 2 } } },
- { 'a': { 'b': { 'c': 1 } } }
- ]
-
- utils._getObjArray(object, 'a.b.c') => [2, 1]
该方法类似_.find,区别是该方法返回第一个通过 predicate
判断为真值的元素的索引值(index),而不是元素本身。
参数:
array
(Array): 要搜索的数组。[predicate=_.identity]
(Array|Function|Object|string): 这个函数会在每一次迭代调用。[fromIndex=0]
(number): The index to search from.返回值:
(number): 返回找到元素的 索引值(index),否则返回 -1
。
例子:
- var users = [
- { 'user': 'barney', 'active': false },
- { 'user': 'fred', 'active': false },
- { 'user': 'pebbles', 'active': true }
- ];
-
- _.findIndex(users, function(o) { return o.user == 'barney'; });
- // => 0
-
- // The `_.matches` iteratee shorthand.
- _.findIndex(users, { 'user': 'fred', 'active': false });
- // => 1
-
- // The `_.matchesProperty` iteratee shorthand.
- _.findIndex(users, ['active', false]);
- // => 0
-
- // The `_.property` iteratee shorthand.
- _.findIndex(users, 'active');
- // => 2

创建一个去重后的array
数组副本。使用了SameValueZero 做等值比较。只有第一次出现的元素才会被保留
参数:
array
(Array): 要检查的数组。返回值:
(Array): 返回新的去重后的数组。
例子:
- _.uniq([2, 1, 2]);
- // => [2, 1]
@description 判断是否为undefined
@returns 返回布尔值
- var a
- utils._isUndefined(a) => true
_.isNaN(value)
检查 value
是否是 NaN
。
注意: 这个方法基于Number.isNaN,和全局的isNaN 不同之处在于,全局的isNaN对 于 undefined
和其他非数字的值返回 true
。
参数:
value
(*): 要检查的值。返回值:
(boolean): 如果 value
是一个 NaN
,那么返回 true
,否则返回 false
。
例子:
- _.isNaN(NaN);
- // => true
-
- _.isNaN(new Number(NaN));
- // => true
-
- isNaN(undefined);
- // => true
-
- _.isNaN(undefined);
- // => false
防抖函数真的太棒了,系统里那么多按钮都需要防抖处理。比如导出按钮,当然除了防抖函数我还另外上锁,避免由于网络原因造成的用户多次点击触发多次请求。
- // 导出
- export: utils._debounce(() => {
- if (this.exportLock) return
- this.exportLock = true
- exportCommonData({
- ...this.formQuery,
- ...this.filter
- }).then(res => {
- delete this.exportLock
- res.url && window.open(res.url)
- })
- }, 1000),
检查 value 是否为一个空对象,集合,映射或者set。 判断的依据是除非是有枚举属性的对象,length 大于 0 的 arguments object, array, string 或类jquery选择器。
对象如果被认为为空,那么他们没有自己的可枚举属性的对象。
类数组值,比如arguments对象,array,buffer,string或者类jQuery集合的length 为 0,被认为是空。类似的,map(映射)和set 的size 为 0,被认为是空。
参数:
value (*): 要检查的值。
返回值:
(boolean): 如果 value 为空,那么返回 true,否则返回 false。
例子:
- _.isEmpty(null);
- // => true
-
- _.isEmpty(true);
- // => true
-
- _.isEmpty(1);
- // => true
-
- _.isEmpty([1, 2, 3]);
- // => false
-
- _.isEmpty({ 'a': 1 });
- // => false
原文链接:https://blog.csdn.net/ShIcily/article/details/124401260
作者:前端霸主
链接:http://www.qianduanheidong.com/blog/article/381426/2127c60b61ea370f197c/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!