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

使用forEach时报错“unhandledRejection: TypeError: data.forEach is not a function”求助

解决TypeError: data.forEach is not a function问题

你遇到这个错误的核心原因很明确:解析后的data是一个对象,而forEach是数组专属方法,对象没有这个方法。

从你打印的结构能看到,data是包含数字键(0、1)和额外属性letter_path的对象,并非数组,直接调用forEach自然会报错。下面给你几种可行的解决方式:

方式1:提取业务数据项组成数组遍历

如果只需要处理0、1对应的业务数据,把这些值提取成数组后再使用forEach:

const data = JSON.parse(message);
// 解构分离出letter_path,剩余部分为数据对象集合
const { letter_path, ...itemsObj } = data;
// 将对象的值转换为数组
const items = Object.values(itemsObj);

// 现在可以正常调用forEach
items.forEach(item => {
  console.log(item.Id, item.Name);
  // 此处编写你的业务处理逻辑
});

如果不确定额外属性的名称,也可以通过过滤数字键来提取目标数据:

const data = JSON.parse(message);
const items = Object.entries(data)
  .filter(([key]) => !isNaN(Number(key))) // 仅保留键为数字的项
  .map(([_, value]) => value);

items.forEach(item => {
  // 处理逻辑
});

方式2:遍历整个对象的所有属性

如果连letter_path也需要处理,可以将对象转换为[键, 值]格式的数组后遍历:

const data = JSON.parse(message);

Object.entries(data).forEach(([key, value]) => {
  if (!isNaN(Number(key))) {
    // 处理业务数据项(如0、1对应的对象)
    console.log('数据项:', value);
  } else if (key === 'letter_path') {
    // 处理文件路径
    console.log('文件路径:', value);
  }
});

内容的提问来源于stack exchange,提问作者T S Nandakumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:32:46