如何修改reduce代码仅统计switcherStatus为true的同供应商awardedCapacity总和
实现代码
let newArr = []; const accumulateResult = bidsList.reduce(function(acc, val) { // 仅处理switcherStatus为true的条目 if (!val.switcherStatus) { return acc; } if (!acc[val.supplierName]) { acc[val.supplierName] = { supplierName: val.supplierName, totalAwarded: 0 }; } acc[val.supplierName].totalAwarded += val.awardedCapacity; return acc; }, {}); // 将累加结果转为数组,自动排除无符合条件条目的供应商 newArr = Object.values(accumulateResult); console.log(newArr);
核心修改说明
- 在reduce回调开头新增开关状态判断:当前条目
switcherStatus为false时直接跳过,不做统计 - 移除了原代码中reduce内部直接向
newArrpush元素的逻辑,避免把所有出现过的供应商(哪怕没有符合条件的条目)提前加入结果 - reduce执行完成后通过
Object.values把累加对象转为结果数组,所有没有符合条件条目的供应商(比如示例中的C)不会出现在累加对象中,自然就被过滤掉
运行后输出结果和你给出的预期完全一致。
内容的提问来源于stack exchange,提问作者user17190872
相关产品推荐
相关产品推荐

