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

使用变量动态获取数组元素失败,求正确语法实现

问题:用变量动态获取对象属性值失败

我想通过变量修改数值,从数组里获取对应元素。直接执行lastKickoffTime = m_nfl_schedule_ar.w_5.slice(-1).pop().kickoff能得到预期结果,但试了好几种变量写法都不行,具体尝试的代码如下:

可行写法

// 可行写法
lastKickoffTime = m_nfl_schedule_ar.w_5.slice(-1).pop().kickoff

无效尝试写法

weekNum = "5";

lastKickoffTime = m_nfl_schedule_ar.['w_'+weekNum].slice(-1).pop().kickoff

lastKickoffTime = m_nfl_schedule_ar.w_[weekNum].slice(-1).pop().kickoff

lastKickoffTime = m_nfl_schedule_ar.w_weekNum.slice(-1).pop().kickoff

lastKickoffTime = m_nfl_schedule_ar.w_+weekNum+.slice(-1).pop().kickoff

lastKickoffTime = m_nfl_schedule_ar.w_'+weekNum+'.slice(-1).pop().kickoff

正确解法

要动态拼接对象的属性名,必须使用方括号语法,且要保证拼接后的是完整的属性名。以下两种写法都有效:

模板字符串写法(ES6+)

const weekNum = "5";
lastKickoffTime = m_nfl_schedule_ar[`w_${weekNum}`].slice(-1).pop().kickoff;

字符串拼接写法

const weekNum = "5";
lastKickoffTime = m_nfl_schedule_ar['w_' + weekNum].slice(-1).pop().kickoff;

无效写法的问题说明

  • 第一种:方括号前多了一个点,正确写法应该是m_nfl_schedule_ar['w_'+weekNum],不需要在方括号前加.
  • 第二种:w_[weekNum]的写法错误,JavaScript不支持将属性名拆分为前缀加变量的形式,必须把完整的属性名放在方括号内
  • 第三种:w_weekNum会被当作字面量属性名,不会将weekNum解析为变量
  • 第四种:语法错误,w_+weekNum+.slice完全不符合JavaScript语法规范
  • 第五种:引号位置错误,错误地将属性名和方法调用都包含在引号中,导致语法失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:01:18