日常开发 lodash 可以用的一些方法

535 阅读2分钟

本篇文章会介绍在日常开发会频繁用到的一些关于对象的 lodash 方法,完整版 lodash 请查看文档

你可以在这里进行 lodash 功能的在线测试

一、判断对象中的属性是否存在 _.has

在写代码的过程中,如果有一些复杂属性需要赋值,可以采用该方法进行属性的判断,然后再进行赋值

_.has(object, path) 参数

  1. object (Object): 要检索的对象。
  2. path (Array|string): 要检查的路径path。

返回 (boolean): 如果path存在,那么返回 true ,否则返回 false。

例如有这样一个数组,我们需要判断 c 属性是否存在,可以通过 _.has 方法

const array = [{a: {b: {c: 3}}}];

_.has(array, '[0].a.b.c'); // true

二、获取对象中的属性 _.get

_.get(object, path, [defaultValue])

参数

  1. object (Object): 要检索的对象。
  2. path (Array|string): 要获取属性的路径。
  3. [defaultValue] (*): 如果解析值是 undefined ,这值会被返回。

返回

(*): 返回解析的值。

如果要获取这个数组的属性,可以用 _.get 方法

const array = [{a: {b: {c: 3}}}];

_.get(array, '[0].a.b.c'); // 3

三、设置对象的属性 _.set

_.set(object, path, value)

参数

  1. object (Object): 要修改的对象。
  2. path (Array|string): 要设置的对象路径。
  3. value (*): 要设置的值。

返回

(Object): 返回 object

一般我们会判断某个值是否存在,然后才给它赋值

const array = [{a: {b: {c: 3}}}];
if (_.has(object, '[0].a.b.c')) {
	array[0].a.b.c = 5
}

这种方法可以转换成

_.set(array, '[0].a.b.c', 5)

如果需要定制化不存在的项的创建方式,可以使用 _.setWith()

比如我们想要这个 array 的第二项为数组,可以采用这种方式

四、更新对象中的属性 _.update

如果期望对对象原来的项进行一些处理,可以采用 _.update

_.update(object, path, updater)

参数

  1. object (Object): 要修改的对象。
  2. path (Array|string): 要设置属性的路径。
  3. updater (Function): 用来生成设置值的函数。

返回

(Object): 返回 object

比如数组中的 c 这个属性,期望对它的值进行 * 2 的处理,我们可以采用

const array = [{a: {b: {c: 3}}}];

_.update(array, '[0].a.b.c', (n) => n * 2);

console.log(_.get(array, '[0].a.b.c')) // 6