У меня есть этот массив
bidsList = [
{
supplierName:'A',
awardedCapacity:5,
switcherStatus: true
},
{
supplierName:'B',
awardedCapacity:10,
switcherStatus: true,
},
{
supplierName:'A',
awardedCapacity:5,
switcherStatus: false,
},
{
supplierName:'A',
awardedCapacity:3,
switcherStatus: true,
},
{
supplierName:'B',
awardedCapacity:5,
switcherStatus: true,
},
{
supplierName:'C',
awardedCapacity:2,
switcherStatus: false,
},
мне нужен был отдельный массив, в котором, когда я выполню итерацию по этому массиву, я рассчитаю общее количество всех награжденных городов, где имя поставщика совпадает
Например, у меня должен быть массив, в котором у меня будет этот вывод
let newArr = [
{
supplierName: 'A',
totalAwarded: 13,
},
{
supplierName:'B',
totalAwarded: 15,
},
{
supplierName:'C',
totalAwarded: 2,
}
]
Решением для этого является:
let newArr = [];
bidsList.reduce(function(acc, val) {
if (!acc[val.supplierName]) {
acc[val.supplierName] = { supplierName: val.supplierName, awardedCapacity: 0 };
newArr.push(acc[val.supplierName])
}
acc[val.supplierName].awardedCapacity += val.awardedCapacity;
return acc;
}, {});
console.log(newArr);
но теперь мне также нужно проверить, установлен ли параметр switcherStatus только в значение true - если он установлен в значение false, я не должен вычислять его пропускную способность, и я не должен вставлять его в массив, если это единственный объект
таким образом, результат должен быть
let newArr = [
{
supplierName: 'A',
totalAwarded: 8,
},
{
supplierName:'B',
totalAwarded: 15,
},
]
C
Исключается здесь, потому что это switcherStatus false, а A равно 8 - потому что объект on был с параметром switcherStatus false
я не могу найти способ изменить этот код сокращения здесь для этой цели.