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

Angular中forEach遍历数组时提示.currency未定义求助

解决forEach遍历中.currency未定义的问题

看起来你的代码里存在两个关键问题,导致了.currency未定义的提示,咱们一步步来修复:

1. 修正forEach的赋值错误

首先,forEach方法的返回值是undefined,你不能把它赋值给array变量——这不仅会让array变成undefined,还可能干扰TypeScript的类型推断。

如果你的目标是筛选出currency为'QTW'的元素,应该用filter方法(它会返回符合条件的新数组),再结合forEach处理:

// 先筛选符合条件的元素
const filteredPrices: MoneyDTO[] = prices.filter((money: MoneyDTO) => money.currency === 'QTW');
// 再遍历处理
filteredPrices.forEach(money => {
  // 这里写你的处理逻辑
});

如果只是遍历原数组处理符合条件的元素,直接调用forEach即可,不需要赋值:

prices.forEach((money: MoneyDTO) => {
  if (money.currency === 'QTW') {
    // Do stuff
  }
});

2. 解决.currency未定义的类型提示

出现这个提示,大概率是TypeScript无法确定money的类型,或者数组里存在空值,你可以从这几个方向排查:

  • 确保prices的类型是MoneyDTO[]
    如果prices是any类型,TypeScript无法推断元素的结构,会认为.currency可能不存在。显式指定prices的类型:

    // 定义你的MoneyDTO接口
    interface MoneyDTO {
      currency: string;
      // 其他必要属性...
    }
    
    // 给prices指定类型
    const prices: MoneyDTO[] = [/* 你的数组内容 */];
    
  • 处理数组中的空值
    如果prices里可能存在null或undefined,需要先做空值检查,避免访问不存在的属性:

    prices.forEach((money) => {
      // 先判断money是否有效
      if (money && money.currency === 'QTW') {
        // Do stuff
      }
    });
    
  • 确认MoneyDTO的定义
    检查你的MoneyDTO接口/类是否确实包含currency属性,比如:

    // 正确的定义示例
    interface MoneyDTO {
      currency: string;
      amount: number;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:29:31