gpt4 book ai didi

javascript - RxJS 等待嵌套的 observable 过滤数组数据

转载 作者:行者123 更新时间:2023-11-30 20:45:42 24 4
gpt4 key购买 nike

有两个Observables:foobar

foo 将返回对象的 array [{ id: 1 }, { id: 2 }, ...] (它将返回整个数组(这里使用 AngularFire .list))

bar 为从 foo 返回的每个项目存储了一个值。该值存储为这样的对象:{ id: 2, status: false }

这里需要做的是最初调用foo,在它的map函数中,我想从subscribe() 方法,如果它在 bar 的响应中的匹配值为 false

换句话说

  1. 观看来自foo的流
  2. .map 对象并从 bar
  3. 检查 每个对象状态
  4. bar 返回值为 truefalse
  5. 的可观察值
  6. .filter foo 取出任何statusfalse
  7. 的对象

我尝试过 combineLatestzip 和其他 RxJS 方法,但不确定我是否正确执行此操作。有人可以告诉我正确的方法,或者至少指出我应该探索哪些方法吗?

感谢您的帮助!

谢谢。

//

.... foo
....... itemId1
....... itemId2

.... bar
....... itemId1: true
....... itemId2: false

在订阅 foo 后,它返回的数组必须经过过滤 以仅返回 itemId1,因为它的 bar 值为 true(两者都是可观察的,foo 和 bar ofc)

最佳答案

这是完成工作的一段代码:

foo = Rx.Observable.of([
{id: 1, data: 'foo1'},
{id: 2, data: 'foo2'},
{id: 3, data: 'foo3'},
{id: 4, data: 'foo4'},
{id: 5, data: 'foo5'},
{id: 6, data: 'foo6'}
]);

bar = Rx.Observable.of([
{id: 1, status: false},
{id: 2, status: true},
{id: 3, status: true},
{id: 4, status: false},
{id: 5, status: true},
{id: 6, status: false}
]).flatMap(obj => obj);

Rx.Observable.combineLatest(foo, bar)
.filter(([foo, bar]) => bar.status)
.map(([foo, bar]) => foo.find(obj => obj.id === bar.id))
.subscribe(data => {
console.log(data)
});

关于javascript - RxJS 等待嵌套的 observable 过滤数组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48720082/

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