javascript - 如果在 rxjs 中没有按顺序重复 3 次,如何跳过 0 值
问题描述
我有以下数据流
1 > 4 > 0 > 3 > 1 > 0 > 0 > 0 > 1 > 2 > 0 > 0 > 0 > 0 > 0 > 0
我只想0
在它连续重复 3 次或更多时才被发出,所以预期的结果将类似于
1 > 4 > 3 > 1 > 0 > 1 > 2 > 0
我怎么能在 rxjs 中做到这一点?
解决方案
您可能希望按照以下示例实现它:
const { from } = rxjs;
const { scan, filter, map} = rxjs.operators;
const input = [
1, 4, 0, 3, 1, 0, 0, 0,
1, 2, 0, 0, 0, 0, 0, 0,
2, 0, 2, 4, 0, 0, 3, 9,
4, 3, 0, 0, 0, 0, 0, 0,
];
from(input).pipe(
scan(({ counter }, current) => {
if (current === 0) return { current, counter: ++counter, emit: counter == 3 }
else return { current, counter: 0, emit: true };
}, { emit: false, counter: 0, current: undefined }),
filter(x => x.emit),
map(x => x.current)
)
.subscribe(console.log)
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.6.2/rxjs.umd.min.js"></script>
推荐阅读
- vbscript - 获取带有空间错误的文件夹路径 - CreateObject ("Scripting.FileSystemObject")
- r - 与 zoo::rollapply 一起使用时 PerformanceAnalytics 包中的某些功能失败
- python-3.x - 找出一个子字符串是否包含在 Python 中的另一个字符串中
- ios - 如何防止 Firebase Cloud Messaging 在 iOS/Unity 上请求推送通知权限
- node.js - Axios http 调用的性能很差,调用需要更长的时间,导致每秒事务数减少
- c# - 从字符串中提取最新的日期时间
- python - 障碍物产生的距离太近
- windows - 我可以使用文件的最后提交时间作为 Windows 日期修改时间戳吗?
- json - 在json中添加换行符
- python - 我怎样才能选择这个 ime 系列(径流)的 7 月份来绘制?