如何安全访问含动态键的嵌套Map 可选链访问嵌套属性的正确写法
嵌套动态键Map的安全访问正确写法
你之前的写法错误是因为可选链访问动态属性时缺少了.符号,正确的可选链动态属性访问语法为?.[动态键],对应你的场景正确写法如下:
token.metaData = newMetadata["721"]?.[this.account.policyId]?.[token.assetName];
语法说明
- 可选链运算符
?.会先判断左侧的对象是否为null/undefined,如果是就直接返回undefined终止后续属性访问,不会抛出运行时错误 - 当使用方括号访问动态键时,必须把
?.放在方括号前面,单独写?[属于不合法语法,所以你之前的代码会报错
旧环境兼容方案
如果你的运行环境不支持ES2020的可选链特性,可以使用逻辑与&&做短路判断实现同等效果:
token.metaData = newMetadata["721"] && newMetadata["721"][this.account.policyId] && newMetadata["721"][this.account.policyId][token.assetName];
内容的提问来源于stack exchange,提问作者wutzebaer
相关产品推荐
相关产品推荐

