如何通过动态键访问JSON对象数组中的目标值?
解决JavaScript动态访问对象属性的问题
你的问题出在对象属性的访问方式上:用点语法(.)的时候,后面的名称会被当作字面量的键名,而不是变量的值。所以arr[num-1].num_name其实是在找键名为num_name的属性,而不是num变量拼接出来的s2,自然拿不到想要的值。
正确的做法是用方括号语法来访问动态键名,把变量放在方括号里:
var arr = [ {"s1" : [1,2,3]}, {"s2" : [4,5,6]} ]; var num = 2; var num_name = "s" + num; // 用方括号包裹变量num_name var output = arr[num-1][num_name]; console.log(output); // 输出 [4,5,6]
简单总结两种访问方式的区别:
- 点语法:适合键名是固定字符串的场景,比如
obj.s1 - 方括号语法:支持动态键名(变量、表达式),比如
obj["s"+num]或者obj[num_name]
内容的提问来源于stack exchange,提问作者dumbPsychologist
相关产品推荐
相关产品推荐

