【发布时间】:2020-01-20 22:15:54
【问题描述】:
我需要过滤一个 Observable 并仅“通过”在该流内部的对象数组中具有特定属性值的流。
让我们举个例子。这是可观察的。
const observable = of({name: 'agency', year: '2010', job: [
{name: 'plumber', city: 'Los Angeles'},
{name: 'driver', city: 'Dallas'}
]});
observable.subscribe(response => console.log(response));
只有当作业数组中有 'name:plumber' 时,我才需要在 subscribe 方法中控制台记录一个响应(响应必须是整个流)。
所以我要做的是:
observable.pipe(
filter(obs => obs.job.filter(item => item.name === 'plumber')))
.subscribe(response => console.log(response));
或
observable.pipe(
map(obs => obs.job),
filter(item => item.name === 'plumber'))
.subscribe(response => console.log(response));
不幸的是,上面的代码没有按预期工作。
只有当作业数组中有一个键值=名称:'plumber'时,我才想接收整个流。
如果满足这个条件,我想获取console.log: {name: 'agency', year: '2010', job: Array(2)},否则控制台中不应该出现任何内容。
你能帮帮我吗?
【问题讨论】:
-
那么预期的结果究竟应该是什么?
-
预期结果应该是整个Observable对象:{name: 'agency', year: '2010', job: Array(2)},但前提是有name: 'plumber'条件遇到了。
标签: javascript angular rxjs