Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Json解析并汇总Json中的值_Javascript_Json - Fatal编程技术网

Javascript Json解析并汇总Json中的值

Javascript Json解析并汇总Json中的值,javascript,json,Javascript,Json,我有一组json值,如下所示 {"labels":[ "time", "softirq", "user", "system", "nice", "iowait" ], "data":[ [ 1490088352, 0, 14.64646, 3.53535, 0, 1.0101 ], [ 1490088351, 0, 27.77778, 3.0303, 0, 0 ], [ 1490088350, 0.49751, 12.93532, 2.98508, 0, 4.47761 ] } 我想解析这个j

我有一组json值,如下所示

{"labels":[ "time", "softirq", "user", "system", "nice", "iowait" ], "data":[ [ 1490088352, 0, 14.64646, 3.53535, 0, 1.0101 ], [ 1490088351, 0, 27.77778, 3.0303, 0, 0 ], [ 1490088350, 0.49751, 12.93532, 2.98508, 0, 4.47761 ] }
我想解析这个json。将标签
{“softirq”、“user”、“system”、“nice”、“iowait”}
值相加,并存储在名为“sum”的单独值中。我的最终输出应该如下所示:

{ "time" : 1490088352 , "sum": "the value which we added "}
{"time" : 1490088351 , "sum": "the value which we added "}
{"time" : 1490088350 , "sum": "the value which we added "}
有人能帮我解决这个问题吗?

用于将数组缩减为单个值

Array.slice(1)
将返回不包括第一个值的数组

var数据={
“标签”:[“时间”、“软件IRQ”、“用户”、“系统”、“尼斯”、“iowait”],
“数据”:[
[1490088352, 0, 14.64646, 3.53535, 0, 1.0101],
[1490088351, 0, 27.77778, 3.0303, 0, 0],
[1490088350, 0.49751, 12.93532, 2.98508, 0, 4.47761]
]
};
var op=[];
data.data.forEach(函数(el){
var obj={
时间:el[0]
};
obj.sum=el.slice(1).reduce(函数(a,b){
返回a+b;
});
op.push(obj);
});
控制台日志(op)用于将数组缩减为单个值

Array.slice(1)
将返回不包括第一个值的数组

var数据={
“标签”:[“时间”、“软件IRQ”、“用户”、“系统”、“尼斯”、“iowait”],
“数据”:[
[1490088352, 0, 14.64646, 3.53535, 0, 1.0101],
[1490088351, 0, 27.77778, 3.0303, 0, 0],
[1490088350, 0.49751, 12.93532, 2.98508, 0, 4.47761]
]
};
var op=[];
data.data.forEach(函数(el){
var obj={
时间:el[0]
};
obj.sum=el.slice(1).reduce(函数(a,b){
返回a+b;
});
op.push(obj);
});

控制台日志(op)如何,首先加载数据

var values= {
  "labels": ["time", "softirq", "user", "system", "nice", "iowait"],
  "data": [
    [1490088352, 0, 14.64646, 3.53535, 0, 1.0101],
    [1490088351, 0, 27.77778, 3.0303, 0, 0],
    [1490088350, 0.49751, 12.93532, 2.98508, 0, 4.47761]
  ]
};
那么

var answer = values.data.map(function(d){return {"time":d[0], "sum": d.splice(1,d.length).reduce((a, b) => a + b, 0)};});

这个怎么样,首先加载数据

var values= {
  "labels": ["time", "softirq", "user", "system", "nice", "iowait"],
  "data": [
    [1490088352, 0, 14.64646, 3.53535, 0, 1.0101],
    [1490088351, 0, 27.77778, 3.0303, 0, 0],
    [1490088350, 0.49751, 12.93532, 2.98508, 0, 4.47761]
  ]
};
那么

var answer = values.data.map(function(d){return {"time":d[0], "sum": d.splice(1,d.length).reduce((a, b) => a + b, 0)};});
var源={
“标签”:[“时间”、“软件IRQ”、“用户”、“系统”、“尼斯”、“iowait”],
“数据”:[
[1490088352, 0, 14.64646, 3.53535, 0, 1.0101],
[1490088351, 0, 27.77778, 3.0303, 0, 0],
[1490088350, 0.49751, 12.93532, 2.98508, 0, 4.47761]
]
};
var数据=source.data;
var mydata=[];
var eachObject={};
用于(数据中的var i){
总和=0;
eachObject={};
对于(var j=1,l=data[i]。长度;j
var源={
“标签”:[“时间”、“软件IRQ”、“用户”、“系统”、“尼斯”、“iowait”],
“数据”:[
[1490088352, 0, 14.64646, 3.53535, 0, 1.0101],
[1490088351, 0, 27.77778, 3.0303, 0, 0],
[1490088350, 0.49751, 12.93532, 2.98508, 0, 4.47761]
]
};
var数据=source.data;
var mydata=[];
var eachObject={};
用于(数据中的var i){
总和=0;
eachObject={};
对于(var j=1,l=data[i]。长度;j


var arr={“labels”:[“time”,“softirq”,“user”,“system”,“nice”,“iowait”],“data:[1490088352,0,14.6464646,3.53535,0,1.0101],[1490088351,0,27.77778,3.0303,0,0],[1490088350,0.49751,12.93532,2.98508,0,4.47761];
var op=[];
对于(变量i=0;i


var arr={“labels”:[“time”,“softirq”,“user”,“system”,“nice”,“iowait”],“data:[1490088352,0,14.6464646,3.53535,0,1.0101],[1490088351,0,27.77778,3.0303,0,0],[1490088350,0.49751,12.93532,2.98508,0,4.47761];
var op=[];
对于(变量i=0;iconsole.log(op);
您可以使用一个带有所需标签的数组作为sum,使用一个哈希表作为时间分组

var data={“labels”:[“time”,“softirq”,“user”,“system”,“nice”,“iowait”],“data:[149088352,0,14.64646,3.53535,0,1.0101],[149088351,0,27.77778,3.0303,0,0],[1490883350,0.49751,12.93532,2.98508,0,4.47761],
标签=[“softirq”、“用户”、“系统”、“尼斯”、“iowait”],
结果=data.data.reduce(函数(散列){
返回函数(r,a){
如果(!散列[a[0]]){
hash[a[0]={time:a[0],sum:0};
r、 推送(散列[a[0]]);
}
hash[a[0]].sum+=labels.reduce(函数(r,l){返回r+(a[data.labels.indexOf(l)]| | 0)},0);
返回r;
};
}(Object.create(null)),[]);
console.log(结果);

。作为控制台包装{max height:100%!important;top:0;}
您可以使用一个数组,该数组带有所需的sum标签,而哈希表用于时间分组

var data={“labels”:[“time”,“softirq”,“user”,“system”,“nice”,“iowait”],“data:[149088352,0,14.64646,3.53535,0,1.0101],[149088351,0,27.77778,3.0303,0,0],[1490883350,0.49751,12.93532,2.98508,0,4.47761],
标签=[“softirq”、“用户”、“系统”、“尼斯”、“iowait”],
结果=data.data.reduce(函数(散列){
返回函数(r,a){
如果(!散列[a[0]]){
hash[a[0]={time:a[0],sum:0};
r、 推送(散列[a[0]]);
}
hash[a[0]].sum+=labels.reduce(函数(r,l){返回r+(a[data.labels.indexOf(l)]| | 0)},0);
返回r;
};
}(Object.create(null)),[]);
console.log(结果);
.as控制台包装{最大高度:100%!重要;顶部:0;}
var数据={
“标签”:[“时间”、“软件IRQ”、“用户”、“系统”、“尼斯”、“iowait”],
“数据”:[
[1490088352, 0, 14.64646, 3.53535, 0, 1.0101],
[1490088351, 0, 27.77778, 3.0303, 0, 0],
[1490088350, 0.49751, 12.93532, 2.98508, 0, 4.47761]
]
};
var op=[];
对于(var i=0;i
var数据={
“标签”:[“时间”、“软件IRQ”、“用户”、“系统”、“尼斯”、“iowait”],
“数据”:[
[1490088352, 0, 14.64646, 3.53535, 0, 1.0101],
[1490088351