gpt4 book ai didi

javascript - 如果在 rxjs 中没有按顺序重复 3 次,如何跳过 0 值

转载 作者:行者123 更新时间:2023-12-03 07:19:57 25 4
gpt4 key购买 nike

我有以下数据流来了

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>

关于javascript - 如果在 rxjs 中没有按顺序重复 3 次,如何跳过 0 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64201130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com