Rxjs和数字数组

Rxjs和数字数组,rxjs,rxjs5,Rxjs,Rxjs5,我无法向自己解释这一点 const something = new Rx.BehaviorSubject([1,2,4,4]) .distinct() .do((s) => console.log(s)) .map(list => list.length) .filter(length => length >=2) .subscribe(total => console.log('total:', total)); 这就是我得到的输出 [1, 2, 4, 4] "

我无法向自己解释这一点

const something = new Rx.BehaviorSubject([1,2,4,4])
.distinct()
.do((s) => console.log(s))
.map(list => list.length)
.filter(length => length >=2)
.subscribe(total => console.log('total:', total));
这就是我得到的输出

[1, 2, 4, 4]
"total:"
 4
我感到很困惑,因为在distinct上查看文档时,我认为这对数字有用。我的用例是一个数据表小部件向我发送事件,这个数组跟踪他们单击的行,我希望在双击发生时检测

更新代码

const something = new Rx.BehaviorSubject([]);
下一步([1]); console.log(something.getValue()); something.next(something.getValue().concat(2)); something.next(something.getValue().concat(3)); something.next(something.getValue().concat(4)); something.next(something.getValue().concat(4))

某物 .distinct() .subscribe(val=>console.log('value:',val))

输出

"value:"
[1, 2, 3, 4, 4]

您发送的值恰好是一个数组。如果您这样做,您将看到distinct的操作

const something = new Rx.BehaviorSubject([]);
something .distinct() .subscribe(val => console.log('value:', val));
something.next(1); // --> value: 1
something.next(2); // --> value: 2
something.next(1); // no output (because of distinct)
something.next(3); // --> value: 3

你有一个数组的流(不是数字流),一个数组的不同部分是同一个数组:)哦,我可以接受这一点作为一个答案sense@OlesSavluk那么我上面发布的更新后的代码段呢?您如何建议在发送重复值时查找并维护已提交ID的知识。或者这不是我应该用rx做的事?我用简单的js写下了我想要完成的事情,但现在我只是好奇这是否可能,以及如何做到。所以说发送1,2,4,6,2…那么你就会知道2是duplicate@Barry听起来您想创建一个与
distinct
相反的操作。当然这是可能的-只要从
distinct
()的代码开始,并在发送时反转即可。具体来说,变成
!这个按键和这个按键下一个(x)
(“当密钥在I-ween-this-value散列中时,发送它。”)@Barry当然,您只想在查看随时间变化的值流时使用Rx。您可以设置订阅和处理程序,以便在将来使用尚未看到的值执行操作。如果您现在知道您的值集,则不需要Rx。例如,使用下划线、
.groupBy(mylist、\uIdentity).filter(函数(g){return g.length>1;}).flatte().uniq()
gotcha yea这些确实会随着时间的推移在用户浏览表格时发生,但在我玩jsbin/rx时,我试图使其尽可能简单。感谢您的评论和回答我的后续问题,我真的非常感谢