You need to enable JavaScript to run this app. JavaScript循环访问JSON动态属性实现批量取值的解决方法
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript循环访问JSON动态属性实现批量取值的解决方法

错误原因定位

你代码的逻辑问题出在JS动态属性的访问规则上:

// 错误的取值写法
data.setValue(i, 1, Respuesta[0].column[i]);

这行代码的实际运行逻辑是:尝试读取Respuesta[0]对象中名为column的属性,再取这个属性的第i个值。但你的column是独立定义的数组,Respuesta[0]本身根本不存在column这个键,因此最终永远无法取到目标值,只会返回undefined。

修正方案

column[i]本质是对应属性名的字符串,JS支持用方括号语法读取动态属性名,只要把属性名传入方括号即可,修正后的循环代码如下:

// 注:你原来定义的column数组存在重复day5的笔误,可按顺序修正
var column = ["day0", "day1", "day2", "day3", "day4", "day5", "day6", "day7", "day8", "day9", "day10", "day11", "day12", "day13", "day14", "day15"];

for (i = 0; i < 5; i++) {
  // 用方括号语法传入动态属性名,即可正确取值
  data.setValue(i, 1, Respuesta[0][column[i]]);
}

优化写法(减少硬编码)

如果后续JSON返回的键始终按day0、day1的顺序排列,完全可以不用手动写死列名数组和循环次数,直接从返回的JSON结构中提取键名即可,降低后续维护成本:

var Respuesta = jQuery.parseJSON(JSON);
// 直接从返回对象中提取所有键名作为列名列表
var column = Object.keys(Respuesta[0]);

// 自动遍历所有返回的日期字段,无需手动指定循环长度
for (i = 0; i < column.length; i++) {
  data.setValue(i, 1, Respuesta[0][column[i]]);
}

内容的提问来源于stack exchange,提问作者Elhannaoui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 01:36:02