如何优雅地给多层嵌套的对象赋值?
假设有个对象非常多层,要给某一层进行赋值,那么需要一层层判断是否为空,有没有优雅的写法?
示例
const a = {
b: null
}
此时要给a对象的d属性赋值,就需要一层层判断非空才行...
a.b.c.d.e="hello"; // 如果没有判断,直接赋值报错
回复
1个回答
test
2024-06-23
根据不同的场景,常用的有两种方案
如果单纯判断属性存在才能赋值,可以用楼上提供的
可选链
这种方案if (a?.b?.c?.d?.e) { a.b.c.d.e="hello"; }
如果不存在的情况也要创建并赋值,可以用
lodash
的set
函数import _ from 'lodash-es'; _.set(a, 'b.c.d.e', 'hello')
https://www.lodashjs.com/docs/lodash.set#_setobject-path-value
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容