首页 > web前端 > js教程 > 如何对 JavaScript 对象数组中重复键的值求和?

如何对 JavaScript 对象数组中重复键的值求和?

Linda Hamilton
发布: 2024-12-17 07:41:24
原创
432 人浏览过

How to Sum Values of Duplicate Keys in a JavaScript Array of Objects?

组合对象数组中的相同键属性值

给定如下所示的 JavaScript 对象数组,我们如何组合通过将对应的值相加来重复键?

objArr = [
    {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:42},
    {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78},
    {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23},
    {key:&quot;Mon Sep 23 2013 00:00:00 GMT-0400&quot;, val:54} // <- duplicate key
]
登录后复制

我们的目标是获得一个具有唯一性的数组键和求和值,如下所示:

reducedObjArr = [
    {key:&quot;Mon Sep 23 2013 00:00:00 GMT-0400&quot;, val:96},
    {key:&quot;Mon Sep 24 2013 00:00:00 GMT-0400&quot;, val:78},
    {key:&quot;Mon Sep 25 2013 00:00:00 GMT-0400&quot;, val:23}
]
登录后复制

使用Map和Reduce的解决方案

我们可以利用map和reduce的强大组合,而不是迭代和推送值减少:

const objArr = [
  {key: 'Mon Sep 23 2013 00:00:00 GMT-0400', val: 42},
  {key: 'Mon Sep 24 2013 00:00:00 GMT-0400', val: 78},
  {key: 'Mon Sep 25 2013 00:00:00 GMT-0400', val: 23},
  {key: 'Mon Sep 23 2013 00:00:00 GMT-0400', val: 54} // <- duplicate key
];

// Convert data into a Map with reduce
const counts = objArr.reduce((prev, curr) => {
  const count = prev.get(curr.key) || 0;
  prev.set(curr.key, curr.val + count);
  return prev;
}, new Map());

// Map counts object back to an array
const reducedObjArr = [...counts].map(([key, value]) => {
  return {key, value}
});

console.log(reducedObjArr); 
登录后复制

这种方法有效地聚合和组合具有相同键的值,从而产生所需的减少数组。

以上是如何对 JavaScript 对象数组中重复键的值求和?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板