我想使用Bacon将时间序列与不规则时间戳组合在一个EventStream中。每个事件将包含给定时间的每个时间序列的最后一个值。 这是一个例子
var ts1 = new Bacon.fromArray([
[1,2], //Each array is an event,i.e here timestamp is 1 and value is 2
[2,3],
[5,9]
])
var ts2 = new Bacon.fromArray([
[4,2],
[9,3],
[12,9]
])
我想拥有的是这样的东西
var ts12 =[
[1,2,undefined], //At time 1, only ts1 was defined
[2,3,undefined],
[4,3,2], //at time 4, we take the last value of ts1 (3) and ts2 (2)
[5,9,2],
[9,9,3],
[12,9,9],
]
我尝试使用Bacon.update实现它,但我没有走得太远。你会如何处理这个问题?
答案 0 :(得分:1)
我假设您的时间序列值以时间参数的顺序作为值到达。因此,在我的代码中更改为Bacon.later
。
var ts1 = new Bacon.mergeAll([
Bacon.later(100, [1,2]),
Bacon.later(200, [2,3]),
Bacon.later(500, [5,9])
])
var ts2 = new Bacon.mergeAll([
Bacon.later(400, [4,2]),
Bacon.later(900, [9,3]),
Bacon.later(1200, [12,9])
])
var ts12 = ts1.toProperty(null).combine(ts2.toProperty(null), function(v1, v2) {
if(v1 && v2) {
return [Math.max(v1[0], v2[0]), v1[1], v2[1]]
} else if(v1) {
return [v1[0], v1[1], undefined]
} else if(v2) {
return [v2[0], undefined, v2[1]]
}
}).changes()
ts12.log()
您可以使用此JSfiddle中的解决方案。