首页 > 解决方案 > 使用 RxJS 按属性状态计数?

问题描述

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

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

标签: javascripttypescriptrxjs

解决方案


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

要计算已完成的待办事项的数量,您可以Array.prototype.reducemap运算符中使用:

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

推荐阅读