我最近發佈this question有關使用d3.nest在JavaScript中總結陣列()使用d3.nest總結陣列在JavaScript()第二部分
我有一個很好的解決方案(兩個事實),但事實證明,這兩種有一個問題適用於附加額外信息時:
data = [
{
continent: 'africa',
country: 'gabon',
values: [1, 2]
}, {
continent: 'africa',
country: 'chad',
values: [3, 4]
}, {
continent: 'asia',
country: 'china',
values: [1, 2]
}
];
sum_by = 'continent';
rollupAgg = function(data, sum_by) {
return d3.nest().key(function(d) {
return d[sum_by];
}).rollup(function(group) {
return group.reduce(function(prev, cur, index, arr) {
return {
values: prev.values.map(function(d, i) {
return d + cur.values[i];
}),
sum_by: sum_by // additional information
};
});
}).entries(data);
};
減少()如果只有一個組中排不運行,因此該返回如下:
[
{
"key": "africa",
"values": {
"values": [4, 6],
"sum_by": "continent"
}
}, {
"key": "asia",
"values": {
"continent": "asia",
"country": "china", // country information shouldn't have been retained
"values": [1, 2]
} // sum_by information should have been added
}
];
您能否看到一種方法來修改此函數,以便返回所需的結果?
明白了。帶着選項2.非常感謝。 –