gpt4 book ai didi

javascript - RxJS 3 条件过滤器

转载 作者:行者123 更新时间:2023-12-03 02:02:05 26 4
gpt4 key购买 nike

我有 3 个条件数字下拉列表,其值 -1 ; 0 ; 1 ;和Observable<Thing[]>我需要根据下拉列表进行过滤的数据源。我需要根据下拉列表显示或隐藏特定行:

    1. 保留所有项目(无过滤器)( -1 )
  • 仅过滤没有特定字段(或字段为空)的内容 ( 0 )
  • 仅过滤具有特定字段 ( 1 )的内容

我正在尝试弄清楚如何连接过滤器和我的下拉列表,以便根据特定值我可以显示相关项目。

dataSource$ = originalDataSource$.filter((item:any) => { 
// check the conditions here
});

有什么想法吗?

最佳答案

使用当前选定的值创建可观察值,可以是这样的:

var dropDownElement = document.getElementById('dropDown');
var dropDownValue$ = Observable
.fromEvent(dropDownElement, 'change')
.map(e => e.target.value)
.startWith(dropDownElement.value);

然后映射过滤谓词并将其与原始数据源组合:

var filterPredicate$ = dropDownValue$.map(dropDownValue => {
if (dropDownValue == 0) return element => {…};
if (dropDownValue == 1) return element => {…};
return () => true;
});

var dataSource$ = Observable.combineLatest(
filterPredicate$, originalDataSource$,
(predicate, data) => data.filter(predicate)
);

关于javascript - RxJS 3 条件过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49965119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com