使用RxJS按属性状态计数?

时间:2018-09-17 21:10:26

标签: javascript typescript rxjs

假设我们希望创建一个发出计数的可观察对象。例如,我们可能有一个let todos:Observable<todo[]>,并且我们想知道其中有多少个实例的completed属性设置为true。所以:

 let count = todos.pipe() //do the count

1 个答案:

答案 0 :(得分:1)

todos观测值发出的是待办事项数组,因此您可以使用map运算符将数组映射到它包含的已完成待办事项的数量。

要计算完成的待办事项数量,可以在Array.prototype.reduce运算符中使用map

import { map } from 'rxjs/operators';
// ...
const completed = todos.pipe(
  map(ts => ts.reduce(
    (total, t) => total + (t.completed ? 1 : 0),
    0
  ))
);