lodash常用api

432 阅读2分钟

前言

此博文用来归纳自己在项目中常用的lodash库api的功能及示例,后续若用到新的会持续更新


cloneDeep()

  • 功能: 深拷贝
  • 示例
let obj={a:12}
let cloneObj=cloneDeep(obj);

merge

  • 功能:用来合并属性;

    • 同名属性后面属性覆盖前面属性的情况:

      • 同名属性值类型不同
      • 若属性值类型相同且是普通类型
    • 同名属性值合并的情况

      • 若属性值都为对象类型或集合,则不是后面覆盖前面,而是进行合并
  • 示例:

// 例1:
console.log(merge(
      {},
      {a: 2},
      {a: {c: 23}},
    ));
// a: {c: 23}

// 例2:
 console.log(merge(
      {},
      {a: {d:33}},
      {a: {c: 23}},
    ));
// a: {d: 33, c: 23}

// 例3
const obj1 = {a: {d: 33}};
    const obj2 = {a: {c: 23}};
    merge(obj1, obj2);
console.log(obj1);
// a: {d: 33, c: 23}
  • 从以上例子的结果可看出,merge函数会将所传参数的属性都合并起来,并把合并的结果赋值给第一个参数,并返回合并结果。

get

  • 功能:用于获取对象的属性值

  • 用处:

    • 日常的对象取值一般是obj.a.b.c 这样的形式。为避免中途某个属性为空导致后续的取值调用出错,往往会加很多if或者逻辑运算符的判断来保证代码的健壮性,导致代码的可读性变差。
    • 所以为既保证代码健壮性又维持代码可读性,就得用到get()
  • 参数:get(object,path,defaultValue)

    • object 就是需要取值的对象
    • path就是取值的路径,可以是字符串,也可以是数组
    • defaultValue就是在取值失败时(obejct中不包含path路径中的值,或则objectnull时),返回的值
  • 示例:

let obj={
   a:[
      {  
        b:{c:12}
       }
     ]
}
get(obj,'a[0].b.c',)  // 12
get(obj,['a','0','b','c']) // 12
get(obj,'a.b.c','默认') // 默认