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

Node.js对象带点键名取值异常:循环输出undefined

解决JavaScript动态访问对象属性返回undefined的问题

嘿,我一眼就瞅出你这段代码的问题啦!你现在用script_type.fileName去访问属性的时候,JavaScript会把fileName当成一个字面量属性名来查找,但你的script_type对象里根本没有叫fileName的属性,所以每次输出都是undefined。要访问动态变量对应的属性,得用方括号语法才行!

下面给你两种可行的解决办法:

方法1:改用方括号语法访问动态属性

这是最直接的修复方式,把变量放在方括号里,JS就会解析变量的实际值作为属性名去查找:

let script_type = {'vpl_run.sh':0,'vpl_debug.sh':1,'vpl_evaluate.sh':2,'vpl_evaluate.cases':2};
let list = ['vpl_run.sh','vpl_debug.sh', 'vpl_evaluate.sh', 'vpl_evaluate.cases'];
for (let i = 0, len = list.length; i < len; i++) {
  let fileName = list[i];
  console.log(script_type[fileName]); // 关键:把点语法改成方括号
}

运行这段代码,控制台就会输出你想要的0 1 2 2啦。

方法2:用ES6的for...of循环简化代码

如果觉得传统for循环有点啰嗦,也可以用更简洁的遍历方式,代码可读性会更好:

let script_type = {'vpl_run.sh':0,'vpl_debug.sh':1,'vpl_evaluate.sh':2,'vpl_evaluate.cases':2};
let list = ['vpl_run.sh','vpl_debug.sh', 'vpl_evaluate.sh', 'vpl_evaluate.cases'];
for (const fileName of list) {
  console.log(script_type[fileName]);
}

这种写法直接遍历数组里的每个文件名,同样能得到正确的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:42:38