[英]How to calculate each object in the array in separate array?
I have this array我有这个数组
bidsList = [
{
supplierName:'A',
awardedCapacity:5,
},
{
supplierName:'B',
awardedCapacity:10,
},
{
supplierName:'A',
awardedCapacity:5,
},
{
supplierName:'A',
awardedCapacity:3,
},
{
supplierName:'B',
awardedCapacity:5,
},
{
supplierName:'C',
awardedCapacity:2,
},
i need to have separete array where when i make the iteration throught this array i will calculate the total of all awardedCapacities where the supplier name is same我需要有一个单独的数组,当我通过这个数组进行迭代时,我将计算供应商名称相同的所有奖励容量的总数
For example i should have array where i will have this output例如我应该有一个数组,我将有这个 output
let newArr = [
{
supplierName: 'A',
totalAwarded: 13,
},
{
supplierName:'B',
totalAwarded: 15,
},
{
supplierName:'C',
totalAwarded: 2,
}
]
because on previous array i had three
objects where the supplierName was A
and when i sum their awarded capacities i am geetting 13 in the other object with it's supplier name因为在以前的数组中,我有
three
对象,其中供应商名称为A
,当我将它们的奖励容量相加时,我在另一个 object 中得到 13 及其供应商名称
You can try using Array.prototype.reduce()
like the following way:您可以尝试使用
Array.prototype.reduce()
如下方式:
let bidsList = [ { supplierName:'A', awardedCapacity:5, }, { supplierName:'B', awardedCapacity:10, }, { supplierName:'A', awardedCapacity:5, }, { supplierName:'A', awardedCapacity:3, }, { supplierName:'B', awardedCapacity:5, }, { supplierName:'C', awardedCapacity: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);
const newArr = bidsList.reduce((a, o) => {
const index = a.findIndex(x => x.supplierName === o.supplierName);
const s = a[index > -1 ? index: a.push({supplierName:o.supplierName, awardedCapacity:0}) - 1];
s.awardedCapacity += o.awardedCapacity;
return a;
}, [])
Use Array.reduce method使用Array.reduce方法
var bidsList = [ { supplierName:'A', awardedCapacity:5, }, { supplierName:'B', awardedCapacity:10, }, { supplierName:'A', awardedCapacity:5, }, { supplierName:'A', awardedCapacity:3, }, { supplierName:'B', awardedCapacity:5, }, { supplierName:'C', awardedCapacity:2, }]; var result = bidsList.reduce((a, c) => { let supplier = a.find(e => e.supplierName == c.supplierName); if (supplier) supplier.totalAwarded += c.awardedCapacity; else a.push({ supplierName: c.supplierName, totalAwarded: c.awardedCapacity }); return a; }, []); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.