lodash 常用方法

154 阅读2分钟

Lodash 是一个广泛使用的 JavaScript 实用工具库,提供了大量实用的函数和方法,以简化常见的编程任务。

安装、调用

npm i --save lodash

//调用
let _ = require("lodash");//方式一:require方式 (commonjs)
import _ from 'lodash';// 方式二:import方式 (es6)
Vue.prototype.$lodash = _;//全局方式:mian.js中prototype方式

_.cloneDeep();//调用

数组相关方法

_.filter(): 过滤数组中的元素,根据提供的函数返回 true 的元素组成新的数组。
_.map(): 遍历数组并返回一个新数组,其中每个元素是原数组元素经过回调函数处理后的结果。
_.reduce(): 对数组中的每个元素执行一个由回调函数指定的操作(累加器),最终返回一个单一输出值。
_.chunk(): 将数组分割成多个小数组,每个小数组包含指定数量的元素。
_.uniq(): 返回一个新数组,其中包含原数组中唯一的元素。
_.compact(): 创建一个新数组,包含原数组中所有的非假值元素。
_.remove(): 移除数组中满足特定条件的所有元素。

对象相关方法

_.merge(): 将多个对象的属性合并到第一个对象中。
_.cloneDeep(): 深拷贝一个对象或数组,创建新的对象或数组,其内容是原对象的深拷贝。
_.get(): 获取对象中指定路径的属性值。
_.keys(): 返回对象的所有键名组成的数组。

字符串相关方法

_.truncate(): 截取字符串到指定长度,并添加省略号('...')以表示被截断的字符串。
_.replace(): 替换字符串中的所有匹配项。
_.split(): 将字符串分割成子字符串数组。

实用工具方法

_.times(): 调用函数指定的次数,并返回每次调用的结果。
_.uniqueId(): 生成一个唯一的 ID。
_.now(): 返回当前时间戳(以毫秒为单位)。

debounce 防抖,throttle 节流,delay 延时函数

const fn = _.debounce(async ()=>{},500)

const fn = _.throttle(async ()=>{},500)

_.delay(function(text) { 
  console.log(text); // => 一秒后输出 'later'。
}, 1000

assign merge

const aa = _.assign({},{a:1},{a:2},{b:3})
//{a:2,b:3}
const bb = _.merge({},{a:1},{a:2},{b:3})
//{a:2,b:3}
const a1 = _.assign({},{a:1},{b:{a:1,b:2}},{b:{a:3}})
//{a:1,b:{a:3}}

const a2 = _.merge({},{a:1},{b:{a:1,b:2}},{b:{a:3}})
//{a:1,b:{a:3,b:2}}

数组去重

  var arr2 = [12,14,11,12,12,1,14,16,17,22,2,11,12]
  var a11 = Array.from(new Set(arr2))
  var a12 = [...new Set(arr2)]
  var a13 = _.uniq(arr2)  //[ 12, 14, 11, 1, 16, 17, 22, 2 ]
  var arrObj = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 },{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
  var a14 = _.uniqWith(arrObj, _.isEqual)  //[ { x: 1, y: 2 }, { x: 2, y: 1 } ]

isEqual 对比

var object = { 'a': 1, 'b':2};
var other = { 'a': 1,'b':2 };
 
var a15 = _.isEqual(object, other);  //true

var a16 = _.isEqual([1,[2],2],[1,[2],2])  //true

深拷贝,浅拷贝

var original = { foo: "bar" };
var newObj = _.cloneDeep(original)
// 浅拷贝
var original1 = { foo: "bar" };
var newObj1 = _.clone(original)