如何在jQuery中通过动态列名访问JSON对象属性
解决方案
你的问题核心是访问对象属性时混淆了点语法和方括号语法,还有一处变量拼写错误,修正后就能正常获取目标值了:
关键错误说明
- 变量拼写不一致:声明的是
curentCol,赋值用的是currentCol,先统一变量名 - 访问动态属性必须用方括号语法:当属性名是变量时,不能用
.(点语法只适用于固定属性名),正确写法是json[i][currentCol],而不是json[i].validColumnsArray[j]
修改后的核心代码片段
$.each(json, function (i) { //TODO: populate the columns with data here for (let j = 0; j < validColumnsArray.length; ++j) { // 统一变量名 var currentCol = validColumnsArray[j]; console.log(currentCol); var test = JSON.stringify(json[i]); console.log(test); // 用方括号语法访问动态属性 arr.push(json[i][currentCol]); console.log(arr); } });
额外优化建议
- 可以简化列匹配逻辑,用
filter替代嵌套循环,更高效简洁:// 替换原来的嵌套循环,筛选出匹配的有效列 validColumnsArray = Object.keys(columnsIn).filter(key => arr.includes(key) && key.length > 0); - 初始的
json != ''判断不够严谨,建议改成Array.isArray(json) && json.length > 0,避免非数组类型导致的错误
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

