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

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

Dec 17, 2024 am 07:41 AM

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

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

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

1

2

3

4

5

6

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

]

登录后复制

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

1

2

3

4

5

reducedObjArr = [

    {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:96},

    {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78},

    {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23}

]

登录后复制

使用Map和Reduce的解决方案

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在JavaScript中替换字符串字符 在JavaScript中替换字符串字符 Mar 11, 2025 am 12:07 AM

在JavaScript中替换字符串字符

自定义Google搜索API设置教程 自定义Google搜索API设置教程 Mar 04, 2025 am 01:06 AM

自定义Google搜索API设置教程

示例颜色json文件 示例颜色json文件 Mar 03, 2025 am 12:35 AM

示例颜色json文件

8令人惊叹的jQuery页面布局插件 8令人惊叹的jQuery页面布局插件 Mar 06, 2025 am 12:48 AM

8令人惊叹的jQuery页面布局插件

构建您自己的Ajax Web应用程序 构建您自己的Ajax Web应用程序 Mar 09, 2025 am 12:11 AM

构建您自己的Ajax Web应用程序

什么是这个'在JavaScript? 什么是这个'在JavaScript? Mar 04, 2025 am 01:15 AM

什么是这个'在JavaScript?

通过来源查看器提高您的jQuery知识 通过来源查看器提高您的jQuery知识 Mar 05, 2025 am 12:54 AM

通过来源查看器提高您的jQuery知识

10张移动秘籍用于移动开发 10张移动秘籍用于移动开发 Mar 05, 2025 am 12:43 AM

10张移动秘籍用于移动开发

See all articles