Mám to pole
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,
},
potřeboval jsem oddělit pole, kde když jsem se iterace přes to pole jsem vypočítá součet všech awardedCapacities, kde dodavatel název je stejný
Například jsem měl pole, kde budu mít tento výstup
let newArr = [
{
supplierName: 'A',
totalAwarded: 13,
},
{
supplierName:'B',
totalAwarded: 15,
},
{
supplierName:'C',
totalAwarded: 2,
}
]
Řešení pro to je:
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);
ale teď se musím zkontrolujte také, zda switcherStatus je setted na true, pouze pokud je setted na false neměl bych to spočítat je awardedCapacity a já jsem neměl tlačit do pole, pokud je jen jeden objekt
takže výstup by měl být
let newArr = [
{
supplierName: 'A',
totalAwarded: 8,
},
{
supplierName:'B',
totalAwarded: 15,
},
]
C
JE vyloučeno, protože je zde switcherStatus nepravdivé, a je 8, protože objekt byl s switcherStatus false
nemůžu najít způsob, jak změnit toto snížení kód zde pro tento účel.