如何在JavaScript中拼接对象动态属性以获取对应值?
动态访问JavaScript对象属性的正确写法
嘿,我来帮你搞定这个问题!你遇到的核心问题是没摸透JavaScript里动态属性访问的语法规则——点号语法只能用来访问固定的属性名,而存在变量里的动态属性名,必须用方括号语法来处理。
正确写法直接看这里:
假设你已经定义了var curr = "games",那正确的访问方式是:
dataObj[0][curr].Value
举个完整示例帮你理解:
比如你的dataObj结构大概是这样的:
const dataObj = [ { games: { Value: "《艾尔登法环》" }, music: { Value: "《晴天》" } } ]; const curr = "games"; // 正确获取目标值 const targetValue = dataObj[0][curr].Value; console.log(targetValue); // 输出:《艾尔登法环》
为什么你之前的写法无效?
dataObj[0].+curr+.Value:这是纯粹的语法错误,JavaScript里根本没有把变量和点号这么拼接的写法dataObj[0].[curr].Value:方括号前面多了个多余的点号,正确结构是对象[动态属性],不需要在方括号前额外加点dataObj[0].+"'"+curr+"'"+.Value:同样是语法错误,这种字符串拼接的方式完全不适用于属性访问场景
拓展:如果需要拼接属性名怎么办?
要是你的动态属性名需要通过变量拼接生成,比如想访问games_2024这个属性,也可以直接在方括号里完成拼接:
const curr = "games"; const year = "2024"; const targetValue = dataObj[0][curr + "_" + year].Value;
内容的提问来源于stack exchange,提问作者Damkulul
相关产品推荐
相关产品推荐

