Angular 9中基于label分组并统计subLable数量的实现问题
Angular 9 按
lable分组并统计subLable计数实现方案 你已经完成了按lable分组的第一步,接下来只需要在每个分组内对subLable的出现次数做统计即可,以下是完整实现代码:
this.smdashboardservice.fetchSmDashboardData().subscribe(response=>{ // 1. 按lable字段分组 const groupedByLabel = response.data.reduce((acc, item) => { const label = item.lable; acc[label] = acc[label] || []; acc[label].push(item); return acc; }, {}); // 2. 对每个分组统计subLable的出现次数 const subLabelStats = Object.entries(groupedByLabel).reduce((statsAcc, [label, items]) => { // 统计当前分组内各subLable的数量 const countMap = items.reduce((countAcc, item) => { const subLabel = item.subLable; countAcc[subLabel] = (countAcc[subLabel] || 0) + 1; return countAcc; }, {}); statsAcc[label] = countMap; return statsAcc; }, {}); // 可选:转换成你期望的字符串格式输出 const formattedResult = Object.entries(subLabelStats).map(([label, counts]) => { const countStr = Object.entries(counts).map(([subLbl, cnt]) => `${subLbl} count ${cnt}`).join(', '); return `${label} subLable ${countStr}`; }).join('\n'); console.log('分组数据:', groupedByLabel); console.log('统计结果:', subLabelStats); console.log('格式化输出:', formattedResult); });
代码说明
- 第一步和你原有逻辑一致,将原始数组按
lable字段分组,得到键为lable值、值为对应数组的对象。 - 第二步通过两层
reduce:外层遍历所有分组,内层统计当前分组内每个subLable的出现次数,最终生成统计映射。 - 可选的格式化步骤会将统计结果转换成你需要的字符串格式,输出示例如下:
Application subLable Nice count 2, poor count 1 Channels subLable Quality count 1
内容的提问来源于stack exchange,提问作者Ramesh S
相关产品推荐
相关产品推荐

