如何通过预定义变量访问嵌套对象数组中的指定属性?
解决通过变量访问数组对象指定属性返回undefined的问题
你的代码存在两个关键问题,导致控制台输出全为undefined,修正后即可正常获取年份数据:
1. 变量名拼写错误
你定义的数组变量是filtered,但循环里误写为filterd(少了字母'e')。先将变量名修正为一致的filtered,确保能正确访问目标数组。
2. 属性访问方式错误
当属性名存储在变量中时,不能使用.点语法——点语法会把后面的标识符当作字面量属性名(即去查找对象里名为q的属性,而你的对象中并没有这个属性,所以返回undefined)。
正确的做法是使用方括号[]语法,方括号会解析变量的值作为属性名去匹配对象中的对应字段。
修正后的完整代码
const filtered = [ { Year: '2019', score1: 88 }, { Year: '2020', score1: 89 }, { Year: '2021', score1: 90 }, { Year: '2022', score1: 91 }, { Year: '2023', score1: 92 }, { Year: '2023', score1: 100 } ]; var q = "Year"; for (let i = 0; i < filtered.length; i++) { console.log(filtered[i][q]); }
输出结果
2019 2020 2021 2022 2023 2023
简化写法(可选)
如果想让代码更简洁,可使用forEach遍历数组:
filtered.forEach(item => console.log(item[q]));
内容的提问来源于stack exchange,提问作者Hussam
相关产品推荐
相关产品推荐

