Angular2,Ionic2:如何在打字稿中访问另一个对象数组中的对象数组?

Angular2,Ionic2:How to access an array of objects inside another array of objects in typescript?

我对在 angular2 中使用数组的概念完全陌生。我的 JSON 数据来自后端,我存储在一个名为 "arr" 的数组中。但是我想访问一个数组,该数组存在于 "arr" 中的每个对象中,即 "arr" 中的每个对象都有一个数组,其中包含一些元素。我想在我的 .ts 文件而不是 HTML 文件中访问该数组。我需要在 .ts 文件中对其进行一些修改,所以我想知道如何为其创建管道。

我读到我们需要使用 pipes.But 我不明白如何为此使用管道。 如果你能在图片中看到有一个主数组,它有 3 个对象,这 3 个对象中的每一个都有一个名为类别的数组,它也有对象。我想访问主数组中存在的所有 3 个对象的类别内的字段 "category"。有人可以帮我做吗?

如果在html

<div *ngFor="let item of arr">
 {{item.aliasname}}
 <div *ngFor="let category of item.categories">
    {{category.name}}
 </div>
</div>

在类型脚本中,您可以使用 foreach 循环

arr.forEach(element => {
    element.forEach(category => {
       console.log(category.name);
       // Do whatever you want
       // You can access any field like that : category.yourField
    });
});

这里不需要管道,管道将用于在模板中实际显示数据,例如,如果您需要迭代对象键,这不能与 *ngFor 一起使用。但是既然你想在组件中操作数据....

您需要两个 forEaches 才能到达不同对象中的每个类别。并且您需要在收到数据后从回调(订阅)中执行此操作,这里有更多信息:

我建议您在服务中执行 http 请求,并在您的组件中订阅数据,因此在您的组件中,调用该服务方法并订阅响应,然后使用 forEach:

ngOnInit() {
  this.service.getData()
    .subscribe(data => {
      this.searchResults = data;
      // call method or manipulate data here since response has been received
      this.manipulateData();
    });
}

manipulateData() {
    this.searchResults.forEach((x:any)=> { // iterate outer array
      x.categories.forEach((y:any) => { // iterate the categories of each object
        console.log(y.name) // ... or whatever properties you have
        // manipulate your data
      })
    })
}

DEMO