Как с помощью reduce свернуть массив, вернув определенную структуру
[
{
"x": 6,
"y": 20
},
{
"x": 6,
"y": 45
},
{
"x": 7,
"y": 1
},
{
"x": 7,
"y": 15
},
{
"x": 7,
"y": 5
},
{
"x": 7,
"y": 19
},
{
"x": 7,
"y": 17
},
{
"x": 7,
"y": 2
}
]
Помогите свернуть такой массив. На выходе должно получится [{x: 6, y:65},{x:7, y:59}] Т.е. нужно суммировать 'y' у одинаковых x
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Если нужно сложить все значения y в группах объектов, где x совпадает, можно так:
const array = [
{ "x": 6, "y": 20 },
{ "x": 6, "y": 45 },
{ "x": 7, "y": 1 },
{ "x": 7, "y": 15 },
{ "x": 7, "y": 5 },
{ "x": 7, "y": 19 },
{ "x": 7, "y": 17 },
{ "x": 7, "y": 2 }
];
const sums = Object.values(array.reduce(
(acc, { x, y }) => {
acc[x] ??= { x, y: 0 };
acc[x].y += y;
return acc;
},
{},
));
console.log(sums);