我正在使用基于d3.js的viz工具实时绘制数据。我单独绘制每个系列的图表,我也想绘制总和。
如何遍历包含解析器*的每个对象,添加y值以便parserSum = 50
?
data = [
{
"y": 20,
"label": "parser1",
"time": 1404999005
},
{
"y": 30,
"label": "parser2",
"time": 1404999005
},
{
"y": 15,
"label": "reader1",
"time": 1404999005
}]
修改 使用@ juvian的答案,这是我的最终结果:
http://jsfiddle.net/yeehawjared/u9Ppd/1/
var procs = ["parser", "reader", "writer"];
for (var i = 0; i < procs.length; i++) {
var sum = 0;
for (var x = 0; x < data.length; x++) {
var obj = data[x];
if (obj.label.indexOf(procs[i]) != -1) {
sum += obj.y;
}
}
console.log(procs[i], sum)
}
答案 0 :(得分:2)
您可以尝试检查标签是否使用indexOf构造解析器,然后将其与
求和var sum=0;
for(var i=0;i<data.length;i++){
var obj=data[i];
if(obj.label.indexOf("parser") != -1){
sum+=obj.y;
}
}
console.log(sum)
答案 1 :(得分:1)
您还可以在阵列上使用.reduce
方法。它看起来像这样:
var sum = data.reduce(function(lastValue, currentElement){
return currentElement.label.indexOf('parser') !== -1 ?
lastValue + currentElement.y : 0;
}, 0);