JavaScript循环中访问JSON数据出现undefined的解决方法
循环中动态访问对象属性的正确方法
你代码里出现undefined的原因是:使用点语法(.)访问属性时,list.pinName会被解析为访问对象中名为pinName的固定属性,但你的list对象里并没有这个属性,所以返回undefined。
要通过变量动态生成属性名并访问,必须使用方括号语法,修改后的代码如下:
var list = { macAddress: 'C0:49:EF:D3:79:20', category: 'esd', dr1: 1, dr2: 1, dr3: 0, dr4: 0 } console.log(list); for(var i=1; i<=2; i++) { var pinName = "dr" + i; // 用方括号语法传入变量,动态访问属性 console.log(list[pinName]); }
两种属性访问方式的区别:
- 点语法:只能直接写固定的属性名,比如
list.dr1,适合属性名明确固定的场景。 - 方括号语法:可以传入变量、字符串甚至表达式,能动态计算出要访问的属性名,完美适配你循环中根据
i生成属性名的需求。
内容的提问来源于stack exchange,提问作者HiDayurie Dave
相关产品推荐
相关产品推荐

