Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用RxJS按属性状态计数?_Javascript_Typescript_Rxjs - Fatal编程技术网

Javascript 使用RxJS按属性状态计数?

Javascript 使用RxJS按属性状态计数?,javascript,typescript,rxjs,Javascript,Typescript,Rxjs,假设我们希望创建一个发出计数的可观察对象。例如,我们可能有一个let todos:Observable,我们希望知道有多少实例的completed属性设置为true。因此: let count = todos.pipe() //do the count todoobservable发出的值是todo的数组,因此您可以使用map操作符将数组映射到它包含的已完成todo的数量 要计算已完成TODO的数量,可以在映射操作符中使用Array.prototype.reduce: 从'rxjs/oper

假设我们希望创建一个发出计数的可观察对象。例如,我们可能有一个
let todos:Observable
,我们希望知道有多少实例的
completed
属性设置为true。因此:

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

todo
observable发出的值是todo的数组,因此您可以使用
map
操作符将数组映射到它包含的已完成todo的数量

要计算已完成TODO的数量,可以在
映射
操作符中使用
Array.prototype.reduce

从'rxjs/operators'导入{map};
// ...
const completed=todos.pipe(
映射(ts=>ts.reduce(
(总计,t)=>总计+(t.完成?1:0),
0
))
);

您可以使用
.scan
.reduce
操作符。
todos.pipe(map(ts=>ts.reduce((total,t)=>total+(t.completed?1:0),0))
@cartant将其添加为答案是的好答案!