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

如何将数组表示法改为对象表示法访问JS对象allTargetsData的amount值

正确用对象表示法访问动态属性的方法

嘿,我来帮你理清这个问题!你遇到的核心问题是动态属性名和固定属性名的访问方式区别——点表示法只能用在固定的属性名上,而当属性名是变量(比如requestYear、showrooms[i]、requestMonth这种)时,必须用方括号表示法,不能直接混着点用。

先拆解你的错误写法问题:

  • .requestYear这里是把requestYear当成了字符串字面量的属性名,而不是你定义的变量,JS会去寻找名为"requestYear"的固定属性,而不是变量里存储的年份值。
  • requestYear.和.[showrooms[i]]里多出来的点是语法错误,直接会导致代码报错。

正确的写法

结合你的层级结构Year→showroom→month→amount,正确的访问方式应该是这样的:

// 因为requestYear、showrooms[i]、requestMonth都是变量,所以用方括号
var monthTargetData = JSON.stringify(allTargetsData.originalTarget[requestYear][showrooms[i]][requestMonth].amount);

如果你想在最后一步用点表示法(因为amount是固定属性名),上面的写法已经做到了——最后.amount就是点表示法,完全没问题。

再明确下两种表示法的适用场景:

  • 点表示法:只能用于固定的、符合JS标识符规则的属性名(比如没有空格、不是关键字、以字母/下划线开头),比如obj.name、obj.amount。
  • 方括号表示法:适用所有场景,尤其是属性名是变量、带特殊字符(比如obj["my property"])或者动态生成的时候,比如你这里的年份、展厅、月份都是变量,必须用方括号。

这样修改后,就能正确访问到amount的值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:03:30