gpt4 book ai didi

javascript - 通过相同的键对 javascript 数组对象进行分组

转载 作者:行者123 更新时间:2023-11-30 09:18:20 25 4
gpt4 key购买 nike

我有一个对象数组,其中一些具有相同的月份名称但基于日期的值不同。我们如何根据相同的属性值对数组对象进行分组,例如:

 [ { month: 'Jan', value: 3 },
{ month: 'Jan', value: 3.5 },
{ month: 'Feb', value: 2.1 },
{ month: 'Mar', value: 6 },
{ month: 'Apr', value: 4.3 },
{ month: 'May', value: 5.5 },
{ month: 'Jun', value: 7 },
{ month: 'Jun', value: 9 },
{ month: 'Jul', value: 7 },
{ month: 'Jul', value: 9 },
{ month: 'Jul', value: 7 },
{ month: 'Aug', value: 9 },
{ month: 'Sep', value: 9 },
{ month: 'Sep', value: 9 },
{ month: 'Oct', value: 8 },
{ month: 'Oct', value: 5 },
{ month: 'Oct', value: 3 },
{ month: 'Nov', value: 12 },
{ month: 'Nov', value: 19.5 } ]

所以我想要得到的是带有月份和月份值总和的新数组:

[{month:"Jan", val:6.5},{month:"Feb", val:5.6},{month:"Mar", val:6},].

最佳答案

你可以拿一个Map并通过将值添加到月份 nad 从分组结果中获取新数组来减少数组。

var data = [{ month: 'Jan', value: 3 }, { month: 'Jan', value: 3.5 }, { month: 'Feb', value: 2.1 }, { month: 'Mar', value: 6 }, { month: 'Apr', value: 4.3 }, { month: 'May', value: 5.5 }, { month: 'Jun', value: 7 }, { month: 'Jun', value: 9 }, { month: 'Jul', value: 7 }, { month: 'Jul', value: 9 }, { month: 'Jul', value: 7 }, { month: 'Aug', value: 9 }, { month: 'Sep', value: 9 }, { month: 'Sep', value: 9 }, { month: 'Oct', value: 8 }, { month: 'Oct', value: 5 }, { month: 'Oct', value: 3 }, { month: 'Nov', value: 12 }, { month: 'Nov', value: 19.5 }],
result = Array.from(
data.reduce(
(m, { month, value }) => m.set(month, (m.get(month) || 0) + value),
new Map
),
([month, value]) => ({ month, value })
);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 通过相同的键对 javascript 数组对象进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53444399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com