如果我的JSON结果有很多行,有时最多100行
标签:第1部分价值:1000 标签:Part2价值:700 标签:Part3价值:600 标签:Part4价值:500
......等等
我想更改数据,以便正常列出前5个结果,但不是列出其余数据,而是将值相加并将标签更改为“其他人”。
实施例
标签:第1部分价值:1000 标签:Part2价值:700 标签:Part3价值:600 标签:Part4价值:500 标签:Part5价值:500 标签:其他价值:25650
在我传递给chart.js派之前,这可以用javascript做吗?或者有更好的方法来实现这一目标吗?
派对的当前代码
function chart1(branch, apitime){
$.ajax({
url: jsonpath' + apitime + branch,
dataType: 'jsonp',
success: function (response) {
console.log (response);
var datachart = response;
var ctx2 = document.getElementById("chart-area2").getContext("2d");
var myChart = new Chart(ctx2).Pie(datachart);
}
});
}
数据已排序,我可以更改服务器上的SQL来执行此操作,我只是不知道正确的方法是什么。
答案 0 :(得分:3)
您可以在创建图表之前修改数据。
var top6 = datachart.slice(0,5)
top6[5] = {
label: 'other',
value: datachart.slice(5).reduce(function(sum, data) {
return sum + data.value
}, 0)
}
var ctx2 = document.getElementById("chart-area2").getContext("2d");
var myChart = new Chart(ctx2).Pie(top6);
这可以更加通用以获得前N个条目
var getTopN = function(dataArray, n)
var tops = dataArray.slice(0, n)
tops[n] = {
label: 'other',
value: dataArray.slice(n).reduce(function(sum, data) {
return sum + data.value
}, 0)
}
return tops
}
var top5 = getTopN(datachart, 5)
var top10 = getTopN(datachart, 10)