gpt4 book ai didi

javascript - 用 RXJS 取直到 N 个相同的数字?

转载 作者:行者123 更新时间:2023-11-28 12:14:35 25 4
gpt4 key购买 nike

我有以一定速率发出值的代码:

let source = zip (
interval(150) ,
from ([0,1,1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3])
) .subscribe(a=>console.log(a))

我想在解决了 N 个值之后找到该值(这意味着 - N 重复相同的值)。

例如,如果N=5,那么我需要找到它第一次产生 5 个相同值的时间。 (并发出该值。)

问题:

如何检测 N 个相同的值并发出该值(& 完成流)?

因此这里的预期值为 3 ,因为它是第一个由 5 个相同值组成的系列:

enter image description here

Online demo

最佳答案

您可以使用 bufferCount(N, 1),其中 1 告诉 bufferCount 在每次发射后发射其缓冲区,这意味着它将发射N 项的数组。然后检查所有内容是否相同且完整。

const N = 5

from ([0,1,1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3])
.pipe(
bufferCount(N, 1),
filter(buffer => buffer.length === N && buffer.every(i => i === buffer[0])),
take(1),
map(buffer => buffer[0]),
)
.subscribe(console.log);

现场演示:https://stackblitz.com/edit/rxjs6-demo-xzb5so?file=index.ts

关于javascript - 用 RXJS 取直到 N 个相同的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52296096/

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