You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用变量作为key动态检查JavaScript嵌套对象的属性值?

解决方案

方案1:使用原生可选链搭配动态key语法

你之前的写法报错是因为仅在最后一层添加了可选链,前面的动态key访问环节如果某一层属性不存在,会直接抛出类型错误。正确的写法是每一层动态key访问前都添加?.做短路处理:

// 只要中间任意一层不存在或version为空,都会返回undefined,取反后为true
if (!configuration?.[project]?.[app]?.version) {
  // 你的校验逻辑
}

如果你的业务场景要求严格匹配「project存在、app存在,但version缺失」的情况,可调整为:

if (configuration?.[project]?.[app] && !configuration[project][app].version) {
  // 你的校验逻辑
}

方案2:封装通用嵌套属性取值工具

如果经常需要处理多层动态key的嵌套取值,可封装一个通用工具函数复用:

/**
 * 读取嵌套对象的属性值,属性不存在时返回undefined
 * @param {object} obj 目标对象
 * @param {array} keys 嵌套属性路径数组
 */
function getNested(obj, keys) {
  return keys.reduce((current, key) => current?.[key], obj)
}

使用时直接传入属性路径即可:

if (!getNested(configuration, [project, app, 'version'])) {
  // 你的校验逻辑
}

内容的提问来源于stack exchange,提问作者user3142695

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:48:03