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);
添加回答
舉報