如何在Angular 5中针对多个值过滤一个变量?

时间:2018-07-09 13:22:11

标签: javascript angular observable

嗨,我正在使用Angular 5,我想针对另一个数组中的多个ID按ID过滤数组Observable

  onSelectedChange(event) {
    console.log(event);
    this.selectedAreas = [11,12,15,19,18,16,22];
    return this.readers$
       .map(projects => projects.filter(proj => proj.AreaId == 13||15||16||18)) // 
       .subscribe(data => {
         console.log(data);
         this.filteredReaders = data;
    })
  }

我想要类似选择 id中的ID

的操作

4 个答案:

答案 0 :(得分:2)

您可以使用Array.includes()

this.selectedAreas.includes(proj.AreaId)

答案 1 :(得分:1)

使用array.indexOf

let possibleValues = [13,15,16,18]
projects.filter(proj => possibleValues.indexOf(proj.AreaId)!= -1)

和ES6,您可以使用 Array.includes

this.selectedAreas.includes(proj.AreaId)

答案 2 :(得分:1)

你很近。这应该满足您的要求

return this.readers$

   .map(projects => projects.filter(proj => [13, 15, 16, 18].includes(proj.AreaId))) 
   .subscribe(data => {
     console.log(data);
     this.filteredReaders = data;
})

答案 3 :(得分:0)

使用数组和indexOf

let possibleValues = [13,15,16,18]
projects.filter(proj => possibleValues.indexOf(proj.AreaId)!= -1)