You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按站点出现次数遍历对象数组并计算active-power平均值

解决方案:计算各站点15分钟窗口active-power平均值

你需要同时统计每个站点的active-power总和与记录次数,再通过总和/次数得到平均值。以下是修改后的Lambda代码,直接实现需求:

实现代码(forEach版本)

export const handler = async(event) => {
    // 存储每个站点的记录数和功率总和
    const siteStats = {};
    
    // 遍历所有IoT数据,累加统计值
    event.forEach(data => {
        const siteName = data.site_name;
        const activePower = data["active-power"];
        
        // 首次遇到站点时初始化统计项
        if (!siteStats[siteName]) {
            siteStats[siteName] = { count: 0, sum: 0 };
        }
        
        siteStats[siteName].count += 1;
        siteStats[siteName].sum += activePower;
    });
    
    // 计算每个站点的平均值
    const siteAverages = {};
    for (const site in siteStats) {
        const { count, sum } = siteStats[site];
        // 避免除以0的异常情况(实际场景可能存在无数据的站点)
        siteAverages[site] = count > 0 ? sum / count : 0;
    }
    
    console.log("各站点统计详情:", siteStats);
    console.log("各站点active-power平均值:", siteAverages);
    
    // 返回平均值结果,可按需写入数据库或其他存储
    return siteAverages;
};

更简洁的reduce版本

如果偏好函数式写法,也可以用reduce一次性构建统计对象:

export const handler = async(event) => {
    // 用reduce遍历数据,生成站点统计对象
    const siteStats = event.reduce((acc, data) => {
        const site = data.site_name;
        const power = data["active-power"];
        
        acc[site] = acc[site] || { count: 0, sum: 0 };
        acc[site].count += 1;
        acc[site].sum += power;
        
        return acc;
    }, {});
    
    // 转换统计对象为平均值结果
    const siteAverages = Object.fromEntries(
        Object.entries(siteStats).map(([site, { count, sum }]) => 
            [site, count > 0 ? sum / count : 0]
        )
    );
    
    console.log("各站点active-power平均值:", siteAverages);
    return siteAverages;
};

测试输出结果

针对你提供的测试事件,运行后会得到:

各站点active-power平均值: { adodar: 8.566666666666666, jamanvada: 3.8166666666666667, abcd: 9.08 }

内容的提问来源于stack exchange,提问作者anonymous_33008899

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:05:38