Angular2,Ionic2:如何访问typescript中另一个对象数组中的对象数组?

Angular2,Ionic2:如何访问typescript中另一个对象数组中的对象数组?,angular,object,typescript,ionic2,arrayofarrays,Angular,Object,Typescript,Ionic2,Arrayofarrays,我对在angular2中使用数组的概念一无所知。我的JSON数据来自后端,存储在一个名为“arr”的数组中。但是我想访问一个数组,它存在于“arr”中的每个对象中,即“arr”中的每个对象都有一个数组,数组中有一些元素。我想访问.ts文件而不是HTML文件中的数组。我需要对in.ts文件做一些修改,所以我想知道如何为相同的文件创建管道 我读到我们需要使用管道,但我不明白如何使用管道。 如果您可以在图片中看到,有一个主数组,它有3个对象,3个对象中的每个对象都有一个名为categories的数组,

我对在angular2中使用数组的概念一无所知。我的JSON数据来自后端,存储在一个名为“arr”的数组中。但是我想访问一个数组,它存在于“arr”中的每个对象中,即“arr”中的每个对象都有一个数组,数组中有一些元素。我想访问.ts文件而不是HTML文件中的数组。我需要对in.ts文件做一些修改,所以我想知道如何为相同的文件创建管道

我读到我们需要使用管道,但我不明白如何使用管道。 如果您可以在图片中看到,有一个主数组,它有3个对象,3个对象中的每个对象都有一个名为categories的数组,该数组也有对象。我想访问主数组中所有3个对象的类别内的“类别”字段。有人能帮我吗

如果是html格式

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

此处不需要管道,管道将用于在模板中实际显示数据,例如,如果需要迭代对象键,则不能与
*ngFor
一起使用。但是,由于您希望操作组件中的数据

您需要两个
forEaches
才能到达不同对象中的每个类别。您需要在收到数据后通过回调(订阅)执行此操作,以下是有关此操作的更多信息:

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

ngOnInit(){
this.service.getData()
.订阅(数据=>{
this.searchResults=数据;
//自收到响应后,在此处调用方法或操作数据
这个。操纵数据();
});
}
操纵数据(){
this.searchResults.forEach((x:any)=>{//迭代外部数组
x、 categories.forEach((y:any)=>{//迭代每个对象的类别
console.log(y.name)/…或任何您拥有的属性
//操纵数据
})
})
}

谢谢但很抱歉,我想用打字机脚本来做这件事。@Impromptu\u Coder我已经添加了它;)@即兴编码器,在我的回答中,第二个part@Impromptu_Coder如果不提供任何代码行,则无法继续。我向您展示了如何循环遍历Angular2中的嵌套数组。没有任何代码就做不到更好。this.http.get('results/tests',{}).subscribe(resp=>{this.searchResults=resp.data;console.log(this.searchResults);},err=>{console.log(err);},()=>{});this.searchResults.forEach(element=>{element.forEach(category=>{console.log(category.name);});});}这就是我尝试过的,它显示了我上面提到的错误。我的API调用正在工作。非常感谢。它起作用了。你让我开心。我有一个疑问,我确实在service.ts文件中编写了我的服务调用,并在我的组件中使用了它。所以我在subscribe中调用了函数“manufactedata()”,然后在这个manufactedata()中我编写了两个foreach。但是它不起作用。所以我直接在subscribe中编写foreach,它就起作用了。有什么原因吗?我的问题还需要补充一点。你能告诉我如何只获取唯一的类别ID而不是所有的类别ID吗?很难说为什么它不能基于看不到任何代码的
manualedata
-方法工作。它应该能工作,就像我在plunker中提供的那样。至于你的第二个问题,你必须写一些逻辑来从你的数据中过滤出唯一唯一的id。。。。这将是一个与你非常接近的问题,我想:)this.Service.getData.subscribe(resp=>{this.searchResults=resp.data;this.searchResults.forEach((x:any)=>{x.categories.forEach((y:any)=>{object this.categority=y.categoriid;console.log(this.categority);});这个有效。但这个无效。testService.post('search/getSearchResults',this.searchobj).subscribe(resp=>{this.searchResults=resp.data;this.manufacturedata();})});你的第二段代码是错误的,所以把它扔掉。您的第一个看起来不错,但是您可以调用一个方法,而不是在订阅中执行foreach,然后在那里执行for-each,就像我的回答所建议的那样。但这不是必须的。这取决于你。
arr.forEach(element => {
    element.forEach(category => {
       console.log(category.name);
       // Do whatever you want
       // You can access any field like that : category.yourField
    });
});