本篇文章会介绍在日常开发会频繁用到的一些关于对象的 lodash 方法,完整版 lodash 请查看文档
你可以在这里进行 lodash 功能的在线测试
一、判断对象中的属性是否存在 _.has
在写代码的过程中,如果有一些复杂属性需要赋值,可以采用该方法进行属性的判断,然后再进行赋值
_.has(object, path) 参数
- object (Object): 要检索的对象。
- 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])参数
object(Object): 要检索的对象。path(Array|string): 要获取属性的路径。[defaultValue](*): 如果解析值是undefined,这值会被返回。返回
(*): 返回解析的值。
如果要获取这个数组的属性,可以用 _.get 方法
const array = [{a: {b: {c: 3}}}];
_.get(array, '[0].a.b.c'); // 3
三、设置对象的属性 _.set
_.set(object, path, value)参数
object(Object): 要修改的对象。path(Array|string): 要设置的对象路径。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)参数
object(Object): 要修改的对象。path(Array|string): 要设置属性的路径。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