我正在调用两个API来返回数据对象。然后对每个人进行检查并搜索它是否有值。
我想检查其中一个obj是否与血管值匹配。
的GetData(蛞蝓){
this._apiService.getPages().subscribe(data =>{
this.pageobj = data
console.log('this page obj',this.pageobj)
})
this._apiService.getPosts().subscribe(data =>{
this.postsobj = data;
console.log('this post obj',this.postsobj)
})
}
this.pageobj是一个对象
this.postsobj
在两个回复中都有一个属性'slug'。 我想检查是否在this.postsobj或this.pageobj中有一个包含'slug'=='hello-word'的对象,如果是这样,则返回对象并存储在var this.content中
更新
export class PageSingleComponent implements OnInit {
page: Page;
pageobj:any;
postsobj:any;
pageobjCheck:any
postsobjCheck:any
pageSlug:any;
content =new Array<any>();
constructor( private _apiService: apiService, private route: ActivatedRoute ) { }
getdata(slug){
this._apiService.getPages().subscribe(data =>{
this.pageobj = data
this.content.push(_.filter(this.pageobj, { 'slug':' hello-world' }));
})
this._apiService.getPosts().subscribe(data =>{
this.postsobj = data;
this.content.push(_.filter(this.postsobj, { 'slug':' hello-world' }));
})
}
ngOnInit() {
this.route.params.forEach((params: Params) => {
// Get slug from the rout
let slug = params['pageslug'];
console.log('slug is catcheds', slug)
this.pageSlug = params['pageslug'];
this.getdata(slug)
// Run functions
//
});
}
}
答案 0 :(得分:2)
我想你想使用Filter function。
在传递给map函数的回调函数中,您要检查您的响应对象表单数组是否具有等于'hello world'的slug属性。你的代码会像这样:
var content = response.filter(obj => obj && obj.slug === 'hello-world');
答案 1 :(得分:1)
我更喜欢使用如下的lodash,
this.content =new Array<any>();
this.content.push(_.filter(this.pageobj, { 'slug':' hello-world' });
this.content.push(_.filter(this.postsobj, { 'slug':' hello-world' });
或者,您可以使用takeWhile
运算符
getPages(){
return this.http.get(...)
.takeWhile(data=>{
if(data.slug ==== 'hello-world'){
return data;
}
})
}