1 回答
TA贡献1804条经验 获得超3个赞
使用Array.prototype.reduce
,您可以通过将当前输入数组作为faculty._id
对象键进行分组来生成新对象,并基于此,您可以计算相同对象键的totalWarnedLength
和。totalClassSize
const input = [{
"faculty": {
"_id": "5f9c3e04e5a5423cec34b2e2",
"code": "khmt",
"facultyName": "Computer Science"
},
"classSize": 91,
"warnedLength": 61
},
{
"faculty": {
"_id": "5f9c53c8a0db8f4240ec6f71",
"code": "dtvt",
"facultyName": "Electronics and Telecommunication"
},
"classSize": 89,
"warnedLength": 44
},
{
"faculty": {
"_id": "5f9c53c8a0db8f4240ec6f71",
"code": "dtvt",
"facultyName": "Electronics and Telecommunication"
},
"classSize": 59,
"warnedLength": 20
},
{
"faculty": {
"_id": "5f9c53c8a0db8f4240ec6f71",
"code": "hkvt",
"facultyName": "Space Airline"
},
"classSize": 10,
"warnedLength": 5
},
{
"faculty": {
"_id": "5f9c53c8a0db8f4240ec6f71",
"code": "hkvt",
"facultyName": "Space Airline"
},
"classSize": 20,
"warnedLength": 10
},
{
"faculty": {
"_id": "5f9c53c8a0db8f4240ec6f71",
"code": "hkvt",
"facultyName": "Space Airline"
},
"classSize": 30,
"warnedLength": 15
}
];
const groupBy = input.reduce((acc, cur) => {
if (acc[cur.faculty['_id']]) {
acc[cur.faculty['_id']].totalClassSize += cur.classSize;
acc[cur.faculty['_id']].totalWarnedLength += cur.warnedLength;
} else {
acc[cur.faculty['_id']] = {
faculty: cur.faculty,
totalClassSize: cur.classSize,
totalWarnedLength: cur.warnedLength
};
}
return acc;
}, {});
const output = Object.values(groupBy);
console.log(output);
添加回答
举报