首页 > 解决方案 > 从对象数组中减少 javascript 对象

问题描述

我有一个这样的对象数组:

[{duration: 12, place: 3}, {duration: 21, place: 4}, {duration: 22, place: 3}]

我想合并来自同一个位置值的所有持续时间。如何在 javascript 中编写一个可以给我这样的输出的函数?

[{duration: 34, place: 3}, {duration: 21, place: 4}]

标签: javascript

解决方案


另一种方法是使用该函数reduce对具有相同位置值的对象进行分组。

const array = [{duration: 12, place: 3}, {duration: 21, place: 4}, {duration: 22, place: 3}],
      result = Object.values(array.reduce((a, {duration, place}) => {
        (a[place] || (a[place] = {duration: 0, place})).duration += duration;
        return a;
      }, {}));
      
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读