首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular:如何通过对象数组按属性过滤Rxjs?

Angular:如何通过对象数组按属性过滤Rxjs?
EN

Stack Overflow用户
提问于 2018-08-10 03:06:23
回答 1查看 1.7K关注 0票数 1

将RXJS v5.5过滤器应用于对象数组的正确方法是什么?

我得到了一个如下所示的json数组:

代码语言:javascript
复制
[
    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保持值

我目前有:

..。

代码语言:javascript
复制
.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……有什么建议吗?

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-10 03:17:18

RxJS中的filter运算符的行为与用于从列表中过滤出项目的Array.filter函数不同。

您实际上从this.symbolSearchService.symbolLookup(val)获得的似乎是一个数组,因此filter中的发射类型也将是一个数组。因此,您可能需要一个转发过滤列表的map运算符,如下所示:

代码语言:javascript
复制
.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;
      });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51774172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档