首页 > 解决方案 > 如何在javascript中对对象数组中的值求和

问题描述

我有一个对象数组,如下所示:

[
    {
        Daypart: "G_POSTPEAK",
        day_of_week: "Monday",
        uplift: 1
    },
    {
        Daypart: "A_BREAKFAST",
        day_of_week: "Thursday",
        uplift: 1
    },
    {
        Daypart: "C_DAYTIME",
        day_of_week: "Sunday",
        uplift: 2
    },
    {
        Daypart: "G_POSTPEAK",
        day_of_week: "Monday",
        uplift: 2
    },
]

我只展示了数组中的一个对象示例,我正在处理更多。它们都具有指定的属性,daypart 属性可以是 8 个值之一,而星期值可以是 7 个(星期几)之一。

我想返回具有相同 daypart 和 day_of_week 值的所有对象的提升值的总和。

所以上面应该返回类似:

{
    G_POSTPEAK_Monday: {
        Daypart: "G_POSTPEAK",
        day_of_week: "Monday",
        uplift: 3
    },
    A_BREAKFAST_Thursday: {
        Daypart: "A_BREAKFAST",
        day_of_week: "Thursday",
        uplift: 1
    },

    C_DAYTIME_Sunday: {
        Daypart: "C_DAYTIME",
        day_of_week: "Sunday",
        uplift: 2
    }
}

感谢任何帮助

标签: javascript

解决方案


可以使用以下功能。我用过ES6。该函数inputs将作为您的输入对象。

const sumIt = (inputs) => {
  const result = {};
  inputs.forEach((input) => {
    const key = `${input.Daypart}_${input.day_of_week}`;
    if (key in result) {
      result[key].uplift = result[key].uplift + input.uplift;
    } else {
      result[key] = { ...input };
    }
  });
  return result;
};


推荐阅读