Bu diziye sahibim
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,
},
bu dizide yinelemeyi yaptığımda, tedarikçi adının aynı olduğu tüm awardedCapacities toplamını hesaplayacağım ayrı bir diziye ihtiyacım vardı
Örneğin, bu çıktıya sahip olacağım diziye sahip olmalıyım
let newArr = [
{
supplierName: 'A',
totalAwarded: 13,
},
{
supplierName:'B',
totalAwarded: 15,
},
{
supplierName:'C',
totalAwarded: 2,
}
]
Bunun çözümü şudur:
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);
ancak şimdi switcherstatus'un yalnızca true olarak ayarlanıp ayarlanmadığını da kontrol etmem gerekiyor-eğer false olarak ayarlanmışsa awardedCapacity hesaplamamalıyım ve tek nesne ise diziye itmemeliyim
yani çıktı şöyle olmalıdır
let newArr = [
{
supplierName: 'A',
totalAwarded: 8,
},
{
supplierName:'B',
totalAwarded: 15,
},
]
C
Burada switcherStatus false olduğu ve A 8 olduğu için nesne üzerinde switcherStatus false olduğu için hariç tutulur
bu azaltma kodunu bu amaçla değiştirmenin bir yolunu bulamıyorum.