Javascript 将从JSON到数组的每个月的所有值相加
我正在尝试进行数据可视化,我需要知道如何对每个月的所有值求和,有JSON数据:Javascript 将从JSON到数组的每个月的所有值相加,javascript,json,Javascript,Json,我正在尝试进行数据可视化,我需要知道如何对每个月的所有值求和,有JSON数据: var data = [ { "created_at": "2016-01-06", "commission": "238.00" }, { "created_at": "2016-01-12", "commission": "538.00" }, { "created_at": "2016-02-02", "commission": "12.0
var data = [
{
"created_at": "2016-01-06",
"commission": "238.00"
},
{
"created_at": "2016-01-12",
"commission": "538.00"
},
{
"created_at": "2016-02-02",
"commission": "12.00"
},
{
"created_at": "2016-03-06",
"commission": "113.00"
},
{
"created_at": "2016-03-18",
"commission": "212.00"
}
];
以下是每月佣金所有值总和的算法:
var months = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
var date;
for (var i = 0; i < data.length; i++) {
date = new Date(data[i].created_at);
if (date.getFullYear() == 2016) {
months = months[date.getMonth()] += +data[i].commission;
}
}
//excepted result would be [776, 12, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0]
alert(months);
var月数=[0,0,0,0,0,0,0,0,0,0,0,0];
风险值日期;
对于(变量i=0;i
我搞不懂这个逻辑,它返回了委员会或NaN的第一个索引。例外的结果是每个月的附加值如下:[776,12,325,0,0,0,0,0,0,0,0,0,0]
有一个JSfiddle,你有一个输入错误。变更
months=months[date.getMonth()]+=+数据[i].佣金代码>至月[date.getMonth()]+=+数据[i]。佣金代码>
var数据=[
{
“创建时间”:“2016-01-06”,
“佣金”:“238.00”
},
{
“创建时间”:“2016-01-12”,
“佣金”:“538.00”
},
{
“创建时间”:“2016-02-02”,
“佣金”:“12.00”
},
{
“创建时间”:“2016-03-06”,
“佣金”:“113.00”
},
{
“创建时间”:“2016-03-18”,
“佣金”:“212.00”
}
];
风险值月份=[0,0,0,0,0,0,0,0,0,0,0,0,0];
风险值日期;
对于(变量i=0;i
months[date.getMonth()]
为什么要用months=
预先指定months[date.getmonths()]
赋值?@最后面的部分是我确保更新这个变量。所以它是混乱的,那么这个答案是清楚的。排版确实意味着你不回答,但投票以“简单的排版错误”的理由结束这个问题。这些问题对任何人都没有帮助,你应该改用调试器。@nicael这是我的问题,不关你的事,thanks@nicael我认为这个输入错误是导致逻辑错误的原因,调试器不会为这些事情产生任何错误。@nicael这只是你的意见,这是一个问题,它的算法和答案对任何人都有帮助,不需要重复这个问题。这是我的错,连调试器都帮不上忙。这个答案很有用。它仍然只是一个打字错误。OP将使用+
而不是+=
。
var data = [
{
"created_at": "2016-01-06",
"commission": "238.00"
},
{
"created_at": "2016-01-12",
"commission": "538.00"
},
{
"created_at": "2016-02-02",
"commission": "12.00"
},
{
"created_at": "2016-03-06",
"commission": "113.00"
},
{
"created_at": "2016-03-18",
"commission": "212.00"
}
];
var months = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
var date;
for (var i = 0; i < data.length; i++) {
date = new Date(data[i].created_at);
if (date.getFullYear() == 2016) {
months[date.getMonth()] = parseFloat(months[date.getMonth()]) + parseFloat( data[i].commission);
}
}
//excepted result would be [776, 12, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0]
alert(months);