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
Node.js 如何使用nodejs从json文件中获取总值的平均值_Node.js_Json - Fatal编程技术网

Node.js 如何使用nodejs从json文件中获取总值的平均值

Node.js 如何使用nodejs从json文件中获取总值的平均值,node.js,json,Node.js,Json,我有一个包含以下数据的json文件 "[{\"ts\":1581669310,\"cpu\":45,\"mem\":3550.67,\"mema\":1443.55,\"batt\":100,\"temp\":21.4,\"comuniqlocacatalogue_cpu\":null,\"comuniqlocacatalogue_mem\":null,\"comuniqlocacatalogue_netr\":null,\"comuniqlocacatalogue_nets\":null},{

我有一个包含以下数据的json文件

"[{\"ts\":1581669310,\"cpu\":45,\"mem\":3550.67,\"mema\":1443.55,\"batt\":100,\"temp\":21.4,\"comuniqlocacatalogue_cpu\":null,\"comuniqlocacatalogue_mem\":null,\"comuniqlocacatalogue_netr\":null,\"comuniqlocacatalogue_nets\":null},{\"ts\":1581669311,\"cpu\":34,\"mem\":3550.67,\"mema\":1441,\"batt\":100,\"temp\":21.4,\"comuniqlocacatalogue_cpu\":null,\"comuniqlocacatalogue_mem\":null,\"comuniqlocacatalogue_netr\":null,\"comuniqlocacatalogue_nets\":null},{\"ts\":1581669312,\"cpu\":40,\"mem\":3550.67,\"mema\":1399.83,\"batt\":100,\"temp\":21.4,\"comuniqlocacatalogue_cpu\":null,\"comuniqlocacatalogue_mem\":null,\"comuniqlocacatalogue_netr\":null,\"comuniqlocacatalogue_nets\":null},{\"ts\":1581669313,\"cpu\":28,\"mem\":3550.67,\"mema\":1430.51,\"batt\":100,\"temp\":21.4,\"comuniqlocacatalogue_cpu\":null,\"comuniqlocacatalogue_mem\":null,\"comuniqlocacatalogue_netr\":null,\"comuniqlocacatalogue_nets\":null},{\"ts\":1581669314,\"cpu\":37,\"mem\":3550.67,\"mema\":1378.81,\"batt\":100,\"temp\":21.4,\"comuniqlocacatalogue_cpu\":0,\"comuniqlocacatalogue_mem\":26.5527,\"comuniqlocacatalogue_netr\":null,\"comuniqlocacatalogue_nets\":null},{\"ts\":1581669316,\"cpu\":54,\"mem\":3550.67,\"mema\":1384.85,\"batt\":100,\"temp\":21.4,\"comuniqlocacatalogue_cpu\":27,\"comuniqlocacatalogue_mem\":199.819,\"comuniqlocacatalogue_netr\":756,\"comuniqlocacatalogue_nets\":2254},{\"ts\":1581669317,\"cpu\":48,\"mem\":3550.67,\"mema\":1378.42,\"batt\":100,\"temp\":21.4,\"comuniqlocacatalogue_cpu\":16,\"comuniqlocacatalogue_mem\":255.646,\"comuniqlocacatalogue_netr\":11005,\"comuniqlocacatalogue_nets\":6031},{\"ts\":1581669319,\"cpu\":41,\"mem\":3550.67,\"mema\":1303.2,\"batt\":100,\"temp\":21.4,\"comuniqlocacatalogue_cpu\":12,\"comuniqlocacatalogue_mem\":321.868,\"comuniqlocacatalogue_netr\":13585,\"comuniqlocacatalogue_nets\":10298},{\"ts\":1581669320,\"cpu\":41,\"mem\":3550.67,\"mema\":1373.43,\"batt\":100,\"temp\":21.4,\"comuniqlocacatalogue_cpu\":8,\"comuniqlocacatalogue_mem\":236.064,\"comuniqlocacatalogue_netr\":30499,\"comuniqlocacatalogue_nets\":12948}]"
每次数据的数量可能会有所不同。所以我决定对每个值取平均值

如-ts、cpu、mem、mema、batt、temp的平均值, Comuniqlocacatalog_cpu、Comuniqlocacatalog_mem、, Comuniqlocacatalog_netr和Comuniqlocacatalog_nets


我怎样才能得到它。请帮忙。此外,每个值的值都将更改,并且值出现的总次数也将更改

您可以使用此代码在列表中查找平均值evrey key,但在此过程中不要计算null值

var data=JSON.parse[{\ts\:158169310\cpu\:45\mem\:3550.67\mema\:1443.55\batt\:100\temp\:21.4\comuniqlocatalogue\u cpu\:1\comuniqlocatalogue\u mem\:null\comuniqlocatalogue\u netr\:null\comuniqlocatalogue\u nets\:null},{\ts\:158169311\cpu\:34\mem\:3550.67\mema\:1441\batt\:100\temp\:21.4\Comuniqlocatalogue\U cpu\:null\Comuniqlocatalogue\U mem\:null\Comuniqlocatalogue\U netr\:null\Comuniqlocatalogue\U nets\:null}; var avgerage=Array.fromdata.reduce acc,obj=>Object.keysobj.reduce acc,键=>对象类型[键]==编号 ?acc.setkey,acc.getkey | |【】concatobj[key] :acc, 行政协调会, 新地图, [名称、值]=> {name,average:values.reduce a,b=>a+b/values.length} ;
console.logavgerage;这段代码可能会对您有所帮助

const data=require./path/to/your/json/file; const averageTs=data.reduceacc,current=>acc+current.ts,0/data.length; const averageCpu=data.reduceacc,current=>acc+current.cpu,0/data.length; //对其他值执行相同的操作
这与其他答案非常相似,只有两个小数

设foo=[{ a:10, b:10.10, c:‘dfdf’, d:是的 }, { a:20, b:20.20, c:‘dfdf’, d:是的 }] 函数obj_avgdata{ 让ret=data.reduceac,record=>{ Object.keysrecord.forEachfield=>{ 如果记录的类型[字段]=“编号”{ 如果!acc[字段]{ acc[字段]=[] } acc[字段]。pushrecord[字段] } } 返回acc }, {} Object.keysret.forEachkey=>{ 设avg=ret[key]。reduceAC,cur=>acc+cur,0/ret[key]。长度 ret[key]=Math.roundavg+Number.EPSILON*100/100 } 回程网 }
console.logobj_avgfoo您尝试了什么?