我正在开发一个Angular 7项目,并且正在处理一个api,该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
答案 0 :(得分:0)
只推obj,而不是y [obj]。可能我不了解任务。并使用代替in。或者您想从对象中获取一些成分子字符串?
答案 1 :(得分:0)
for(let y of resultsarray){
ingrSub: Array<any> = new Array();
for(let obj in y){
if(obj.includes('strIngredient')){
if(y[obj]!=null){
if(y[obj].length > 0){
ingrSub.push(y[obj])
console.log(this.ingArray)
}
}
}
}
if(ingrSub.length > 0)
this.ingArray.push(ingrSub)
else
ingrSub = null;//just to be sure that we do not leak the memory if engine thinks the oposite in some case
}
答案 2 :(得分:0)
this.array_a = [] <- this add your array
this.array_b.forEach(array_b_item => {
array_b_item.new_variable = JSON.parse(
JSON.stringify(this.array_a)
);
});
you can add values indivualy to array_b