Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays TypeScript如何在对象数组中循环_Arrays_Angular_Typescript_Javascript Objects - Fatal编程技术网

Arrays TypeScript如何在对象数组中循环

Arrays TypeScript如何在对象数组中循环,arrays,angular,typescript,javascript-objects,Arrays,Angular,Typescript,Javascript Objects,我目前正忙于一个Angular项目,在该项目中,我从API接收到一个包含对象数组的对象 “reportData”是通过我的服务作为参数发送到API的对象 从API发回的数据示例: 我想在数组中循环,并将产品名称推送到一个数组中,同样使用averageQuantityOrdered,但我不知道如何循环数组并获取值 让我困惑的一件事是,当你看附加的屏幕截图时,结果似乎是一个包含一系列对象的对象。我想这就是为什么我不能循环它,因为从技术上讲它是一个对象而不是数组 我尝试了类似的方法(retrieve

我目前正忙于一个Angular项目,在该项目中,我从API接收到一个包含对象数组的对象

“reportData”是通过我的服务作为参数发送到API的对象

从API发回的数据示例:

我想在数组中循环,并将产品名称推送到一个数组中,同样使用averageQuantityOrdered,但我不知道如何循环数组并获取值

让我困惑的一件事是,当你看附加的屏幕截图时,结果似乎是一个包含一系列对象的对象。我想这就是为什么我不能循环它,因为从技术上讲它是一个对象而不是数组

我尝试了类似的方法(retrievedData是对象数组),但随后出现错误“无法读取未定义的属性'forEach'”:

我使用服务检索数据:

onSubmit(form:NgForm)
  {

    this.service.postReportData().subscribe(
      res => {
        this.retrievedData = res;
        console.log(this.retrievedData);
      },
      err => {
        console.log(err);
      }
    );

  }

任何帮助都将不胜感激

谢谢大家的宝贵意见

我用以下代码实现了它:

onSubmit(form:NgForm)
  {
    this.service.postReportData().subscribe(
      res => {
        this.retrievedData = res;

        this.retrievedData.reportData.forEach(function (item) {
          console.log(item);
          console.log(item.ProductName);
          console.log(item.AverageQuantityOrdered);
        });

      },
      err => {
        console.log(err);
      }
    );

  }
由于reportData包含对象数组,因此我必须循环遍历该数组,而不是检索数据


再次感谢大家,我感谢大家的帮助

因此,您收到的是一个包含对象数组的对象

您的
res
应为

类型项={
产品名称:字符串;
AverageQuantityOrdered:数字;
产品订单:未知[];
}
类型RetrievedData={
报告数据:第[]项;
}
因此,您可以将
RetrievedData
设置为
RetrievedData
变量的类型

retrievedData:retrievedData
而不是
any


然后
retrievedData.reportData
将为您提供数组。

如何设置
retrievedData
?http呼叫?如果它是异步的,您将需要在
subscribe
@Ric中执行这种类型的工作,我只是将它声明为any。“retrievedData:any;”如何设置?手动或通过api调用?因此您可以在订阅中执行:
this.retrievedData.forEach(item=>{})
。假设返回的数据不是null/undefinedYou可以使用JS
Array\map
。在订阅中执行此操作:
this.productNames=res.reportData.map((数据:any)=>data.ProductName)。您无法在订阅之外执行此操作,因为您永远不知道可观察对象何时会发出异步消息。在post中了解有关异步数据的更多信息。
onSubmit(form:NgForm)
  {
    this.service.postReportData().subscribe(
      res => {
        this.retrievedData = res;

        this.retrievedData.reportData.forEach(function (item) {
          console.log(item);
          console.log(item.ProductName);
          console.log(item.AverageQuantityOrdered);
        });

      },
      err => {
        console.log(err);
      }
    );

  }