-
„Разбиването“ идва от вашия код:параметърът за стойностите на вашата функция за намаляване може да съдържа или
{time:<timestamp>,value:<value>}
излъчван от вашата функция за карта, или{time:[<timestamps>],value:[<values]}
върнат от предишно повикване към вашата функция за намаляване. -
Не знам дали ще се случи на практика, но може да се случи на теория.
-
Просто накарайте вашата функция за карта да излъчва същия вид обекти, които връща вашата функция за намаляване, т.е.
emit(<id>, {time: [ts], value: [P[1]]})
и съответно променете функцията си за намаляване, т.е.Array.push.apply(result.time, V.time)
и подобно заresult.value
.Всъщност не разбирам защо не използвате масив от двойки време/стойност, вместо чифт масиви, т.е.
emit(<id>, { pairs: [ {time: ts, value: P[1] ] })
илиemit(<id>, { pairs: [ [ts, P[1]] ] })
във функцията map иArray.push.apply(result.pairs, V.pairs)
във функцията за намаляване. По този начин дори няма да имате нужда от функцията за финализиране (освен може би да „разопаковате“ масива от двойки свойство:тъй като функцията за намаляване не може да върне масив, трябва да го обвиете по този начин в обект)