Angular 2 / ES6 /基于属性

时间:2017-04-16 20:49:20

标签: javascript angular loops ecmascript-6

我正在调用两个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是一个对象


enter image description here


this.postsobj

enter image description here

在两个回复中都有一个属性'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
      //     
        });

    }
 }

2 个答案:

答案 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;
                        }
                    })
}