当前位置: 首页 > article >正文

JavaScript获取array中相同key的平均值

有一组数据如下:

const data = [
    { "序号": 1, "取样时间": "2020-03-10", "cq": "3cq","cj": "8cj","pc": "3pc","sf": 42.381,pH: 5.524,"atd": 334.922},
    { "序号": 2, "取样时间": "2020-03-10", "cq": "3cq","cj": "8cj","pc": "3pc","sf": 45.31,pH: 5.624,"atd": 337.222},
    { "序号": 1, "取样时间": "2020-03-14", "cq": "3cq","cj": "7cj","pc": "3pc","sf": 41.37,pH: 5.504,"atd": 330.922},
    { "序号": 1, "取样时间": "2020-03-15", "cq": "1cq","cj": "7cj","pc": "1pc","sf": 40.37,pH: 5.204,"atd": 380.922},
];

求这组数据两个相同key,其他数据的平均值

//计算数组平均值
function averagedata(arr,str) {
    var data = arr.reduce((acc, val) => acc + val[str], 0)/arr.length;
    return data
}

// 使用reduce函数对数组进行处理,初始累加器(acc)为空对象{}
function groupBy(arr,str) {
    const dataBytime = arr.reduce((acc, arrdata) => {
    // 获取当前数据两个key
    const keysdata = `${arrdata.取样时间}|${arrdata[str]}`; //第一个key是取样时间,另一个就是其他的,可以是cq,cj等
        console.log(keysdata)
    // 检查acc对象中是否已经存在以当前两个为键的数组
    if (!acc[keysdata]) {
        // 如果不存在,创建一个空数组
        acc[keysdata] = [];
    }
    // 将当前数据添加到对应数组中
    acc[keysdata].push(arrdata);

    // 返回更新后的累加器对象
    return acc;
    }, {}); // 初始累加器为空对象

    var datasjn = [];
    for (i in dataBytime) {
        console.log(dataBytime[i])
        if (dataBytime[i].length>1) {
            var p = {"取样时间":dataBytime[i][0].取样时间,[str]: dataBytime[i][0][str],"sf":averagedata(dataBytime[i],'sf'),pH:averagedata(dataBytime[i],'pH'),"atd":averagedata(dataBytime[i],'atd')}
            datasjn.push(p)
        }
        else {
            var p = {"取样时间":dataBytime[i][0].取样时间,[str]: dataBytime[i][0][str],"sf":dataBytime[i][0].sf,pH:dataBytime[i][0].pH,"atd":dataBytime[i][0].atd}
            datasjn.push(p)
        }
    }
    return datasjn

    }

console.log(groupBy(data,'pc'))


http://www.kler.cn/news/353663.html

相关文章:

  • 基于SSM电子资源管理系统的设计
  • 《计算机视觉》—— 疲劳检测
  • Android Gralde 新版aar依赖问题解决
  • 滚雪球学Redis[4.2讲]:Redis Sentinel 深度解析:工作原理、配置与高可用架构下的故障转移
  • 如何打开荣耀手机的调试模式?
  • Vue 3 的不同版本总结
  • 自动化运维的研究与应用
  • Latex
  • 高一全栈开发;国产 Arc 浏览器;Tauri 2.0 发布 | 生活周刊 #3
  • python实现录屏功能
  • 甲方安全和乙方安全的区别
  • Git常用指令【精简版】
  • CodeActAgent :Executable Code Actions Elicit Better LLM Agents解读
  • Meta新模型Dualformer:融合快慢思维,推理能力媲美人脑
  • Mamba学习笔记(2)—序列数据处理基础
  • 顺序表删除相关的算法题|删除最小值|删除值为x的值|删除区间内的值|删除重复的元素(C)
  • Vue3 路由基础 02
  • 爬虫案例——网易新闻数据的爬取
  • 【数据结构】宜宾大学-计院-实验三
  • 【Linux 从基础到进阶】防止数据泄露的策略与工具