如何分组数组和计数值

  • 本文关键字:数组 arrays sorting
  • 更新时间 :
  • 英文 :


我有一个数组,我想根据类型分组,然后计算每个唯一状态的实例数量。

这是我的数组:

const array =   [
{ type: 'A', number: 2, status:'Approved', year: '2020' },
{ type: 'A', number: 3, status:'Approved', year: '2020' },
{ type: 'A', number: 3, status:'Disapproved', year: '2020' },
{ type: 'A', number: 6, status:'Disapproved', year: '2020' },
{ type: 'A', number: 5, status:'Processing', year: '2020' },
{ type: 'B', number: 8, status:'Processing', year: '2020' },
{ type: 'B', number: 2, status:'Approved', year: '2020' },
{ type: 'B', number: 2, status:'Disapproved', year: '2020' },
]

这是我想要的数组:

const desiredArray =   [
{ type: 'A',  Approved:5, Disapproved: 9, Processing: 13, year: '2020' },
{ type: 'B',  Approved:2, Disapproved: 2, year: '2020' },
]

在其他网友的帮助下,这个操作非常成功:

const reducedObject = array.reduce((rv,x) =>{
if(!rv[x.type]) {
rv[x.type] = {
type: x.type,
Approved: 0, 
Disapproved: 0, 
Processing: 0, 
year: x.year
}
}
rv[x.type][x.status]++;
return rv;
}, {});

const desiredArray = Object.values(reducedObject);

另一个答案:

var array = [
{ Id: "001", qty: 1 }, 
{ Id: "002", qty: 2 }, 
{ Id: "001", qty: 2 }, 
{ Id: "003", qty: 4 }
];
var result = [];
array.reduce(function(res, value) {
if (!res[value.Id]) {
res[value.Id] = { Id: value.Id, qty: 0 };
result.push(res[value.Id])
}
res[value.Id].qty += value.qty;
return res;
}, {});

console.log(结果)

最新更新