-
La "fragmentación" proviene de su código:el parámetro de valores de su función de reducción puede contener
{time:<timestamp>,value:<value>}emitido desde su función de mapa, o{time:[<timestamps>],value:[<values]}devuelto de una llamada anterior a su función de reducción. -
No sé si sucederá en la práctica, pero puede suceder en teoría.
-
Simplemente haga que su función map emita el mismo tipo de objetos que devuelve su función reduce, es decir,
emit(<id>, {time: [ts], value: [P[1]]}), y cambie su función de reducción en consecuencia, es decir,Array.push.apply(result.time, V.time)y de manera similar pararesult.value.Bueno, en realidad no entiendo por qué no estás usando una matriz de pares de tiempo/valor, en lugar de un par de matrices, es decir,
emit(<id>, { pairs: [ {time: ts, value: P[1] ] })oemit(<id>, { pairs: [ [ts, P[1]] ] })en la función de mapa, yArray.push.apply(result.pairs, V.pairs)en la función de reducción. De esa manera, ni siquiera necesitará la función de finalización (excepto tal vez para "desenvolver" la matriz de los pares propiedad:debido a que la función de reducción no puede devolver una matriz, debe envolverla de esa manera en un objeto)