javascript - 如何在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
}
}
感谢任何帮助
解决方案
可以使用以下功能。我用过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;
};
推荐阅读
- php - PHP MySQL选择范围内的值
- python - 如何使用另一个数据框中的值对数据框中的每个元素应用限制
- avro - Spring Cloud Stream + Avro
- postgresql - Docker Compose: run a command at build time but not at run time
- sql - 使用 Apache Spark SQL 连接到 Oracle 的 Databricks 秘密
- forms - Codeigniter 4 模块形成动作
- flutter - 既然标题已弃用,如何处理 BottomNavigationBarItem 上的文本溢出?
- excel - 运行日期选择器工具时多选并在 Excel 中使用 VBA 自动调整
- twitter-bootstrap - (width: w, height: h) 在 Bootstrap scss _sizing 文件中迭代了什么?
- javascript - 如何为 React-Table 实现全局过滤搜索?