2 回答
TA贡献1780条经验 获得超1个赞
你可以得到所有你在一个迭代上使用原始数据所需要的输出Array.reduce()来生成一个object与数据的新数组和累积值Vt和Tv,例如:
var data = [
{Name:"A", Var:"15", Temp:"20", Lo:"T"},
{Name:"B", Var:"45", Temp:"40", Lo:"F"},
{Name:"B", Var:"63", Temp:"340", Lo:"T"},
{Name:"A", Var:"415", Temp:"450", Lo:"F"},
{Name:"B", Var:"405", Temp:"940", Lo:"F"},
{Name:"B", Var:"415", Temp:"410", Lo:"T"},
{Name:"A", Var:"24", Temp:"51", Lo:"T"},
{Name:"C", Var:"43", Temp:"40", Lo:"T"},
{Name:"A", Var:"41", Temp:"40", Lo:"F"}
];
function reduceData(data, type)
{
return data.reduce((acc, {Name, Var, Temp}) =>
{
if (Name !== type)
return acc;
let Vt = (+Var) + (+Temp), Tv = Temp - Var;
let len = acc.newData.push({Vt, Tv});
acc.acc_vt += Vt;
acc.acc_tv += Tv;
acc.avg_tv = (acc.avg_tv * (len-1) + Tv) / len;
acc.avg_vt = (acc.avg_vt * (len-1) + Vt) / len;
return acc;
}, {newData: [], acc_vt: 0, acc_tv: 0, avg_vt: 0, avg_tv: 0})
}
console.log(reduceData(data, "A"));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
添加回答
举报