You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSON位置10出现意外undefined令牌错误,数组添加问题求助

问题原因分析
  1. 循环逻辑完全错误:for (let i = 1; i <= list.length; i--) 是无限循环——初始i=1,每次循环i递减,永远满足i <= list.length(只要list初始长度≥0),会导致list被无限添加内容,最终处理JSON时出现异常。
  2. 变量未定义/拼写错误:
    • 代码中使用的list变量未声明,若未在外部定义则为undefined,直接调用list.push会导致后续生成的内容包含无效值,触发JSON解析错误。
    • console.log(lista);中的lista是拼写错误,应为list或listData.lista,这里会直接输出undefined。
  3. 模板字符串语法错误:&quot;$ {listData}&quot; 里的$和{之间有空格,正确写法是${listData};而且直接将对象listData插入字符串会得到"[object Object]",这不是合法的JSON格式值,后续转JSON时会引发解析错误。
  4. JSON不支持undefined类型:如果getList(cssList)返回undefined,或者propCSS是undefined,那么listData.lista = propCSS会让listData包含undefined值,当尝试将这些内容序列化为JSON时,JSON规范不允许undefined,就会抛出Unexpected token undefined的错误。
解决方法

1. 修正循环逻辑

根据需求调整循环,比如如果是要向list添加指定次数的内容,改为合理的循环条件:

// 示例:添加3次内容
for (let i = 0; i < 3; i++) {
  list.push(JSON.stringify(listData)); // 将对象转为合法JSON字符串
  console.log(list);
}

如果是要遍历listData.lista的内容,改为:

for (const item of listData.lista) {
  list.push(item); // 直接添加数组元素,而非整个对象
  console.log(list);
}

2. 声明并初始化变量

确保list变量已正确声明和初始化:

const list = []; // 初始化空数组

3. 修复模板字符串与JSON序列化

如果需要将listData转为JSON格式的字符串存入数组,使用JSON.stringify()而非直接拼接:

// 错误写法:`"$ {listData}"`
// 正确写法:
list.push(JSON.stringify(listData));

4. 确保关键变量有有效值

在使用getList(cssList)和resposta['propCSS']前,先检查是否为有效值:

const propCSS = resposta?.['propCSS'] || []; // 兜底为空数组
const listData = getList(cssList) || { lista: [] }; // 兜底为包含空数组的对象
listData.lista = propCSS;

修正后的完整示例代码

const list = []; // 初始化空数组
const propCSS = resposta?.['propCSS'] || [];
const listData = getList(cssList) || { lista: [] };
listData.lista = propCSS;

// 示例:向list添加listData的JSON字符串,循环3次
for (let i = 0; i < 3; i++) {
  list.push(JSON.stringify(listData));
  console.log(list);
}

内容的提问来源于stack exchange,提问作者Thierry Santos Pereira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:10:32