У меня есть два массива объектов JavaScript:
const types = [
{
id: 1,
name: 'Paint',
unit: 'L',
},
{
id: 2,
name: 'Resin',
unit: 'mL',
},
{
id: 3,
name: 'Fiberglass',
unit: 'yd',
}
];
const items = [
{
id: 1,
type_id: 1,
name: 'Brand x paint',
qty: 5,
},
{
id: 2,
type_id: 1,
name: 'Brand y paint',
supplier: 'brand y',
qty: 3,
},
{
id: 3,
type_id: 2,
name: 'Brand x resin',
qty: 5,
},
{
id: 3,
type_id: 2,
name: 'Brand y resin',
qty: 2,
},
{
id: 3,
type_id: 2,
name: 'Brand z resin',
qty: 3,
},
{
id: 3,
type_id: 2,
name: 'Brand x fiberglass',
qty: 7,
},
{
id: 3,
type_id: 2,
name: 'Brand y fiberglass',
qty: 9,
},
];
Я хочу создать новый массив с массивом типов с дополнительным свойством, которое представляет собой сумму величин для каждого соответствующего типа.Я придумал сопоставить массив типов и внутри функции назначить новое свойство, например totalQty, которое равно отфильтрованным элементам типа, а затем уменьшить его с помощью накопителя суммы.Что-то вроде этого, что ужасно неправильно где-то вокруг фильтрующей части:
const itemTypes = types.map( (type) => {
type.total_qty = items
.filter((items) => items.type_id === type.id)
.reduce((sum, item) => sum += item.qty, 0)
}
)
Я просто хочу сделать вышеописанное, но если есть лучшие способы добавления свойства total_quantity рядом с типом, тогда я открытк предложениям.Заранее спасибо!