javascript常用方法之数组对象计算每个属性的平均值(有值
2022-02-19 本文已影响0人
阿巳交不起水电费
计算对象中某些属性的平均值,注意:这里不是单纯的所有对应项加起来再除以arr.length,这里是除以的对应有值项的个数,在我的项目中计算原燃料成分的平均值时多个地方有用到。
避免大家重复造轮子,这里分享给大家。
/**
* 计算数组对象平均值 【注意:这里计算的是每行中“有数据”的“属性”的均值】
* @arr 是要计算的数组对象
* @fixed 保留小数位数
* return 计算均值后的对象 eg:[{a:'1',b:'',c:'12'},{a:'2',b:'0',c:'3'},{a:'',b:'2',c:'3'}] => {a: "1.500", b: "1.000", c: "6.000"}
* */
var averageCal = function (arr, fixed = 3) {
let dataobj = {}
arr.map((obj) => {
Object.keys(obj).map(item => {
dataobj[item] || (dataobj[item] = [])
if (obj[item] !== undefined && obj[item] !== null && obj[item] !== '' && !isNaN(obj[item])) { // 有值且为数字
dataobj[item].push(+obj[item])
}
})
})
Object.keys(dataobj).map(item => {
if(dataobj[item] && dataobj[item].length){
dataobj[item] = (dataobj[item].reduce((a, b) => a + b,0) / dataobj[item].length).toFixed(fixed)
}else{
dataobj[item] = ''
}
})
return dataobj
}
// eg:
averageCal([{a:'1',b:'',c:'12'},{a:'2',b:'0',c:'3'},{a:'',b:'2',c:'3'}])
eg:
image.png