[英]Angular: How do I Rxjs filter by property through an array of objects?
將RXJS v5.5過濾器應用於對象數組的正確方法是什么?
我回到一個看起來像這樣的json數組:
[
0: {CompanyName: "Facebook Inc-A", Symbol: "FB", is_etf: false},
1: {CompanyName: "Flagstar Bancp", Symbol: "FBC", is_etf: false},
2: {CompanyName: "UBS AG FI Enhanced Large Cap Growth ETN", etf_data: {…}, Symbol: "FBGX", is_etf: true},
3: {CompanyName: "Fortune Brd H&S", Symbol: "FBHS", is_etf: false},
4: {CompanyName: "Fortress Biotec", Symbol: "FBIO", is_etf: false},
5: {CompanyName: "First Bus Finl", Symbol: "FBIZ", is_etf: false},
...]
我需要使用is_etf === false
保留值
我目前有:
...
.switchMap(val => this.symbolSearchService.symbolLookup(val))
.takeUntil(this.ngUnsubscribe)
.filter((value) => {
console.log(value)
return true
})
.subscribe(val => {
console.log('val', val)
this.searchResults = val;
});
symbolLookup返回上面引用的數組。 在我嘗試過的過濾器中:
value => !value.is_etf
value => return value.is_etf === false
value => value['is_etf'] === false
但是這些都不起作用,因為is_etf屬性在每個對象上,而不在值響應上。 在RXJS之前,我會先做一個for循環,然后再使用value[i]['is_etf']
等,但是這里沒有運氣。 我遇到的所有閱讀材料都在做簡單的過濾器,例如value => value> 2 ...有什么建議嗎?
謝謝!!
RxJS中的filter
運算符的行為不像用於從列表中濾除項目的Array.filter
函數。
什么你實際上是從得到this.symbolSearchService.symbolLookup(val)
似乎是一個數組,所以在emmission類型filter
也將是一個數組。 因此,您可能正在尋找的是map
操作員,該操作員可以轉發已過濾的列表,如下所示:
.switchMap(val => this.symbolSearchService.symbolLookup(val))
.takeUntil(this.ngUnsubscribe)
.map((values) => {
return values.filter(v => !v.is_etf);
})
.subscribe(val => {
console.log('val', val)
this.searchResults = val;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.