-
"Chunking" đến từ mã của bạn:tham số giá trị của hàm giảm có thể chứa
{time:<timestamp>,value:<value>}
phát ra từ hàm bản đồ của bạn hoặc{time:[<timestamps>],value:[<values]}
được trả về từ cuộc gọi trước đó cho chức năng giảm của bạn. -
Tôi không biết liệu nó có xảy ra trong thực tế hay không, nhưng nó có thể xảy ra trên lý thuyết.
-
Chỉ cần để hàm bản đồ của bạn phát ra cùng một loại đối tượng mà hàm giảm của bạn trả về, tức là
emit(<id>, {time: [ts], value: [P[1]]})
và thay đổi chức năng giảm của bạn cho phù hợp, tức làArray.push.apply(result.time, V.time)
và tương tự choresult.value
.Tôi thực sự không hiểu tại sao bạn không sử dụng một mảng các cặp thời gian / giá trị, thay vào đó là một cặp mảng, tức là
emit(<id>, { pairs: [ {time: ts, value: P[1] ] })
hoặcemit(<id>, { pairs: [ [ts, P[1]] ] })
trong hàm bản đồ vàArray.push.apply(result.pairs, V.pairs)
trong hàm giảm. Bằng cách đó, bạn thậm chí sẽ không cần đến hàm finalize (ngoại trừ có thể "mở" mảng khỏi cặp thuộc tính:bởi vì hàm Reduce không thể trả về một mảng, bạn phải bọc nó theo cách đó trong một đối tượng)