美文网首页网页前端后台技巧(CSS+HTML)让前端飞web前端技术分享
javascript常用方法之数组对象计算每个属性的平均值(有值

javascript常用方法之数组对象计算每个属性的平均值(有值

作者: 阿巳交不起水电费 | 来源:发表于2022-02-19 08:16 被阅读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

    相关文章

      网友评论

        本文标题:javascript常用方法之数组对象计算每个属性的平均值(有值

        本文链接:https://www.haomeiwen.com/subject/zizelrtx.html