我正在努力求和一个数组。我没有任何错误,所以我不确定如何使其工作。
我传递给该函数的数据如下所示:
{Region:'' ,freq:{yesVote:0, noVote:0}}
我试着这样总结一下:
// compute pie slice angles
var pie = d3.pie().sort(null).value(function (d) {
var yesTotal;
var noTotal;
console.log(d);
yesTotal = d3.sum(d, function(v){
console.log(v.freq);
return v.freq.yesVote;
});
noTotal = d3.sum(d, function(v){
return v.freq.noVote;
});
console.log(yesTotal);
console.log(noTotal);
return [yesTotal,noTotal];
});
Sum函数返回0,并且sum函数内部的log函数没有出现在控制台中(正确地首先记录日志打印数据),因此我认为传递给sum函数的数据有问题。您能解释一下我在哪里犯错吗?
编辑
打印数据:
最佳答案
如果这是console.log(d)
产生的内容:
{Region:'' ,freq:{yesVote:0, noVote:0}}
那么,是的,您没有传递正确的数据。您只传递带有单个值集的对象。
d3.sum()
应该对整个数据数组进行操作。例:var data = [
{Region: 'A' ,freq: {yesVote:1, noVote:10}},
{Region: 'B' ,freq: {yesVote:2, noVote:11}},
{Region: 'C' ,freq: {yesVote:3, noVote:12}}
];
yesTotal = d3.sum(data, function(d) {
return d.freq.yesVote;
});
noTotal = d3.sum(data, function(d) {
return d.freq.noVote;
});
console.log(yesTotal)
6
console.log(noTotal)
33
尝试将总和移出饼图值函数,因为在其中
d
只是整个数据集中的一行。