簡體   English   中英

Angular:我如何通過對象數組按屬性過濾Rxjs?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM