如何从对象数组中计算指定字段值并生成对应统计新对象
实现代码(JavaScript)
// 原始数组 const caseList = [ { caseStatus: "Closed", caseDays: 5, caseRate: 40 }, { caseStatus: "Closed", caseDays: 8, caseRate: 25 }, { caseStatus: "Active", caseDays: 5, caseRate: undefined } ]; // 统计逻辑 const result = caseList.reduce((acc, cur) => { if (cur.caseStatus === 'Active') { acc.countActive += 1; } else if (cur.caseStatus === 'Closed') { acc.countClosed += 1; acc.ClosedCaseDaysSum += cur.caseDays || 0; acc.ClosedCaseRateSum += cur.caseRate || 0; } return acc; }, { countActive: 0, countClosed: 0, ClosedCaseDaysSum: 0, ClosedCaseRateSum: 0 }); console.log(result);
输出结果
运行后得到的result完全符合要求的结构:
{ countActive: 1, countClosed: 2, ClosedCaseDaysSum: 13, ClosedCaseRateSum: 65 }
补充说明
- 用reduce方法单次遍历完成所有统计,时间复杂度为O(n),效率更高
- 求和时添加
|| 0容错处理,即使Closed状态条目出现caseDays/caseRate为undefined、null的异常值,也不会出现NaN的计算错误
内容的提问来源于stack exchange,提问作者creativated
相关产品推荐
相关产品推荐

