计算对象数组中属性的平均值

2024-01-07

假设有一个由两个或多个对象组成的数组:

const arr =[{PM1:10, PM10:20},{PM1:20, PM10:30, CO:27}, {NO2:30}]

如何有效地计算组成数组的对象中每个属性的平均值? 我事先不知道每个对象的属性,即使有共同的属性。 我期望一个结果:

{PM1:15, PM10:25, CO:27, NO2:30}

我想我可以使用reduce,但我不知道如何使用。


您可以使用以下任一方法循环访问对象的属性名称for-in(其中包括继承的属性)或来自的数组Object.keys(事实并非如此)。在这两种情况下,仅可枚举的属性都包括在内。

例如:

const arr =[{PM1:10, PM10:20},{PM1:20, PM10:30, CO:27}, {NO2:30}];

const result = {};
const counts = new Map();
for (const element of arr) {
    for (const key in element) {
        if (Object.hasOwn(element, key)) {
            // Count this property
            counts.set(key, (counts.get(key) ?? 0) + 1);
            // Add it to the sum
            result[key] = (result[key] ?? 0) + element[key];
        }
    }
}
// Update with the averages
for (const [key, count] of counts) {
    result[key] = result[key] / counts.get(key);
}

实例:

// Quick-and-dirty polyfill for older environments without `Object.hasOwn`:
if (!Object.hasOwn) {
    Object.defineProperty(Object, "hasOwn", {
        value: Function.prototype.call.bind(Object.prototype.hasOwnProperty),
        writable: true,
        configurable: true,
    });
}

const arr =[{PM1:10, PM10:20},{PM1:20, PM10:30, CO:27}, {NO2:30}];

const result = {};
const counts = new Map();
for (const element of arr) {
    for (const key in element) {
        if (Object.hasOwn(element, key)) {
            // Count this property
            counts.set(key, (counts.get(key) ?? 0) + 1);
            // Add it to the sum
            result[key] = (result[key] ?? 0) + element[key];
        }
    }
}
// Update with the averages
for (const [key, count] of counts) {
    result[key] = result[key] / counts.get(key);
}

console.log(result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算对象数组中属性的平均值 的相关文章

随机推荐

  • 如何将 Youtube 视频嵌入到我的应用程序中?

    我正在尝试为我的 Swift 应用程序创建一个视频播放器 但我不断收到 无法解析的标识符 AVPlayerViewController 的错误 我缺少什么 我是这方面的初学者 通俗地说我可能要问几千次 我已经在互联网上搜索了大约一天的视频
  • Django 多个 slug url

    我有两种蛞蝓 path
  • 两个极限之间缩放数字的数学方程不从 0 开始? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 例如 我有一个 1 100 之间的数字 我需要将其缩放到 20 80 之间 例子 1 scales to 20 100 scales to
  • 错误的键类:文本不是 IntWritable

    这似乎是一个愚蠢的问题 但我在 hadoop 的 mapreduce 代码中没有看到我的类型中的问题 正如问题中所述 问题是它需要 IntWritable 但我在减速器的collector collect 中向它传递了一个 Text 对象
  • 不支持的方法:eth_sendTransaction。 Alchemy 不持有用户的私钥

    我无法通过 Alchemy 从前端执行智能合约的发送交易方法 我是一个初学者 我正在尝试从我的前端执行一个方法 将交易发送到区块链 但我从 alchemy 收到一个错误 说该交易需要使用我的私钥签名 但我不知道如何执行此操作我在互联网上没有
  • 在 Swift 上从 kCBAdvDataManufacturerData 中提取数据

    我有一个 TI 传感器标签作为外设 以 kCBAdvDataManufacturerData 的形式广播 BLE 数据 我想从 iOS 中的数据中提取不同的值 我正在 Swift 中执行以下命令 func centralManager ce
  • 如何以 <60 秒的间隔运行 ColdFusion 计划任务?

    我有一个 CFC 方法 希望以 30 秒的间隔运行一次 但是 问题是 ColdFusion 不允许我安排以 60 秒或更短的时间间隔运行的任务 有人对我如何 并且应该 实现这一目标有建议吗 为了抢先回答 当你的脚本运行超过 30 秒时会发生
  • 调整居中径向渐变的半径大小

    我正在重新设计当前的项目 并找到了一种简单的方法来使用以下方法淡化 div 背景的左右边缘 我一直在尝试编辑中心圆的半径 以使其更小 我似乎无法改变它 除非整个渐变样式消失 我试图将黄色区域设置为文本的背景 逐渐淡入透明 我需要做什么才能获
  • 以编程方式从 *.cls 或类似文件将模块导入 access

    如果打开 Microsoft Access 则打开 Visual Basic 窗口 以便您可以看到 Access 项目中的模块和代码列表 您可以从 Windows 资源管理器中拖动基于文本的文件 txt cls bas 等 并将其放入模块文
  • 是否可以替换操作系统的Loader?有什么办法获得Loader的控制权吗?

    我只是想知道是否可以替换操作系统的加载程序 可执行程序加载程序而不是引导加载程序 Windows 是我的选择 是否有任何第三方加载程序可以修补默认加载程序 有什么方法可以让我获得对 OS Loader 的控制权吗 我的意思是 我希望它所做的
  • 有 ISO-Prolog 参考实现吗?

    Java https jdk7 java net java se 7 ri has a 参考实现 http en wikipedia org wiki Reference implementation ISO Prolog 有参考实现吗 我
  • OSError:未找到名为“cairo-2”的库(从 Custom_Widgets 导入 ProjectMaker)

    如何修复这个错误 C Users vanvl OneDrive Bureaublad Progammeren Project 1 02 2 gt python Python 3 9 13 tags v3 9 13 6de2ca5 May 1
  • 如何使用 D3DPT_TRIANGLESTRIP 基元类型在 DirectX 中绘制两个分离的矩形

    我是 DirectX 新手 我正在尝试使用以下命令在一个场景中绘制两个矩形D3DPT TRIANGLESTRIP 一个矩形没问题 但两个矩形则完全不同 是的 我可以使用用 绘制的四个三角形来绘制它们D3DPT TRIANGLELIST原始类
  • 如何向工具栏添加调用 JavaScript 函数的自定义按钮?

    我想在工具栏上添加一个按钮来调用 JavaScript 函数 例如Tada 关于如何添加这个有什么想法吗 还有一种很好的方法允许人们在不创建插件的情况下添加按钮 html
  • 如何使用 CSS 或 Jquery 覆盖 left:0?

    我有一个元素 它具有以下 CSS elem left 0 position fixed right 0 width 60 z index 1000 该元素不跨越整个屏幕 我希望它 对齐 到屏幕的右侧 如果我删除的话 这会很容易left 0
  • SNMP 代理的测试 URL

    我正在尝试查找 SNMP 代理的 URL 列表 我可以将其用于测试目的 到目前为止 我已经使用了 NET SNMP 测试 url gt test net snmp org 我还使用 Verax Simulator 来模拟特定代理 不过 请问
  • Django 根据 ChoiceField 选择显示字段

    我一直很难找到如何在 django 中创建一个依赖于表单中另一个字段的选择的文本字段 仅当选择设置为 购买 时才需要显示此字段 现在我遇到一个问题 它不会根据下拉选择进行更新 而是仅在我点击按钮 提交 表单后进行更新 有没有办法获取当前选择
  • RISC-V 使用 LUI 和 ADDI 构建 32 位常量

    LUI 加载立即数 用于构建32位常量并使用U型格式 LUI 将 U 立即数放入目标寄存器 rd 的高 20 位 并用零填充最低 12 位 我在手册中找到了这个 但是如果我想将 0xffffffff 移动到寄存器 我需要的所有代码是 LUI
  • 将“增强记录”分配给普通“数据类型”变量时,应重载什么运算符?

    首先 我需要知道我想做的事情是否可行 如果可能的话 我需要知道如何做 演示问题比解释问题要容易得多 所以这里是 我有一个 增强记录 目的 虽然对这个问题并不重要 是生成一个 智能字符串 类型 以替换普通的字符串类型 TLKString re
  • 计算对象数组中属性的平均值

    假设有一个由两个或多个对象组成的数组 const arr PM1 10 PM10 20 PM1 20 PM10 30 CO 27 NO2 30 如何有效地计算组成数组的对象中每个属性的平均值 我事先不知道每个对象的属性 即使有共同的属性 我