【发布时间】:2019-06-05 19:50:29
【问题描述】:
我正在开发一个 Angular 7 项目,我正在处理一个 api,它在搜索时返回一组(食谱)对象,我想从每个对象中获取所有成分,这样我就可以遍历它们,只得到什么我想要,因为每个(食谱)对象都不同
我尝试循环遍历初始对象数组,然后遍历每个单独的对象并仅获取每个(配方)对象的可用成分,但我不知道如何将它们推送到单独的数组中。每当我推送时,所有对象的所有成分都会被推送到一个数组中。
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { RecipesService } from 'src/app/services/recipes.service';
@Component({
selector: 'app-search',
templateUrl: './search.component.html',
styleUrls: ['./search.component.scss']
})
export class SearchComponent implements OnInit {
s: string;
ingArray: any[] = []
measurementsArr = []
nothingFound = false;
itemsFound = false;
searchedData: any[] = [];
searchresults: number;
constructor(private route: ActivatedRoute, private service:RecipesService) { }
ngOnInit() {
this.route.queryParams.subscribe(params=>{
this.s = params.s;
console.log(this.s)
})
this.searchDB()
}
searchDB(){
this.service.searchRecipeDB(this.s).subscribe((res:any)=>{
if(res.meals === null){
this.nothingFound = true;
}else{
this.searchedData = res.meals
console.log(this.searchedData)
this.itemsFound = true;
this.searchresults=this.searchedData.length;
let resultsarray = this.searchedData
for(let y of resultsarray){
for(let obj in y){
if(obj.includes('strIngredient')){
if(y[obj]!=null){
if(y[obj].length > 0){
this.ingArray.push(y[obj])
console.log(this.ingArray)
}
}
}
}
}
}
})
}
}
我已经能够循环并从每个(配方)对象中获取每种成分,但无法将它们推送到单独的数组中而无需定义多个数组。有没有一种方法可以将(食谱)对象中的所有成分推送到单独的数组中,而无需添加来自其他(食谱)对象的其他成分?我不想定义多个数组,因为我正在使用 api,而且我一直不知道预期的搜索结果search results showing an array of objects
【问题讨论】:
-
可以分享一下搜索结果的数据结构或者分享一个json格式的示例结果吗?
-
太长了,可以看看这个链接吗->i.stack.imgur.com/s6IWU.png