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

TypeError问题求助:rawRegistrosList.forEach不是函数报错排查

问题原因分析

报错TypeError: rawRegistrosList.forEach is not a function的核心原因是**rawRegistrosList不是数组,而是一个普通对象**。

从你提供的API返回数据可以看到,res.data是单个对象(包含idTrabajador等字段的对象),而非数组格式。但你的代码里将其赋值给了声明为数组类型的rawRegistrosList,随后尝试调用数组专属的forEach方法——对象没有这个方法,因此触发报错。

解决方案

根据业务需求,可选择以下几种处理方式:

1. 调整后端API返回数组格式(推荐)

如果接口预期返回多条数据,修改后端让data字段返回数组结构,示例如下:

{
  "data": [
    {
      "idTrabajador": 1,
      "cifEmpresa": "20855585",
      // ...其他字段
    }
  ],
  "backendError": null,
  "httpResponse": true,
  "totalCount": 1
}

修改后你的现有代码即可正常运行,因为res.data已变为数组,可直接调用forEach。

2. 修改前端代码适配单个对象

如果接口确实只返回一条数据,无需循环,直接处理该对象即可:

private buildConsultaList(res: any){
    this.registros = [];
    const rawElement = res.data; 
    const registro : Consulta = new Consulta();
    registro.cifEmpresa = rawElement.cifEmpresa;
    registro.nombreEmpresa = rawElement.nombreEmpresa;
    registro.ccc = rawElement.ccc;
    registro.afiliado = rawElement.afiliado;
    registro.nombreCompleto = rawElement.nombreCompleto;
    registro.identTrab = rawElement.identTrab;
    registro.altaMC = rawElement.altMC; // 注意:API返回字段是altMC,原代码写的altaMc存在大小写不匹配问题
    
    this.registros.push(registro);    
    
    console.log("1 this.registro");
    console.log(this.registros);   
    return this.registros; 
}

3. 临时包装为数组兼容现有循环逻辑

如果想保留forEach的循环代码,可临时将单个对象包装成数组:

private buildConsultaList(res: any){
    this.registros = [];
    const rawRegistrosList: any[] = [res.data]; // 把单个对象放入数组
    rawRegistrosList.forEach(rawElement => {
      const registro : Consulta = new Consulta();
      registro.cifEmpresa = rawElement.cifEmpresa;
      registro.nombreEmpresa = rawElement.nombreEmpresa;
      registro.ccc = rawElement.ccc;
      registro.afiliado = rawElement.afiliado;
      registro.nombreCompleto = rawElement.nombreCompleto;
      registro.identTrab = rawElement.identTrab;
      registro.altaMC = rawElement.altMC; // 修正字段名大小写
      
      this.registros.push(registro);    
    });
    
    console.log("1 this.registro");
    console.log(this.registros);   
    return this.registros; 
}
关于初始化的问题

你的rawRegistrosList初始化语法本身没问题,但类型声明any[]和实际赋值的对象类型不匹配。建议开启TypeScript严格模式,这样能提前提示这类类型错误,帮助你更早发现问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:05:15