如何优雅地给多层嵌套的对象赋值?-灵析社区

代码日记

假设有个对象非常多层,要给某一层进行赋值,那么需要一层层判断是否为空,有没有优雅的写法? 示例 const a = { b: null } 此时要给a对象的d属性赋值,就需要一层层判断非空才行... a.b.c.d.e="hello"; // 如果没有判断,直接赋值报错

阅读量:188

点赞量:0

问AI
根据不同的场景,常用的有两种方案 1. 如果单纯判断属性存在才能赋值,可以用楼上提供的 "可选链" 这种方案if (a?.b?.c?.d?.e) { a.b.c.d.e="hello"; } 2. 如果不存在的情况也要创建并赋值,可以用 "lodash" 的 "set" 函数import _ from 'lodash-es'; _.set(a, 'b.c.d.e', 'hello') "https://www.lodashjs.com/docs/lodash.set#_setobject-path-value" (https://link.segmentfault.com/?enc=0cuUCgMHwYlrUUSavI1t8g%3D%3D.G2akqoPij88546kSF3OuPp0BH4DP0W612WvI%2FjZljInA%2B%2FCuEREA1Y8ODop64kggXQJ70u3pcBB7JJD9V9KQ7w%3D%3D) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241014/8f4ed81edaad4cb14fde83a2f5d1a0ef.png)