如何在TypeScript/JavaScript中按date和serialNumber双参数统计重复值
你之前的代码只使用serialNumber作为统计key,只要把key调整为date + serialNumber的组合值,即可实现双维度分组统计,完整实现如下:
const data = [ { date: "2021-10-10", serialNumber: "4A6211B92417A7DB" }, { date: "2021-10-11", serialNumber: "5B6211B92417A7DB" }, { date: "2021-10-12", serialNumber: "5B6211B92417A7DB" }, { date: "2021-10-12", serialNumber: "4A6211B92417A7DB" }, { date: "2021-10-12", serialNumber: "4A6211B92417A7DB" }, { date: "2021-10-12", serialNumber: "4A6211B92417A7DB" } ]; const countMap = {}; // 遍历原数组统计 data.forEach(item => { // 用日期和序列号拼接为唯一key,分隔符选不会出现在两个字段中的字符即可 const key = `${item.date}|${item.serialNumber}`; if (!countMap[key]) { countMap[key] = { serialNumber: item.serialNumber, date: item.date, count: 0 }; } countMap[key].count += 1; }); // 把统计对象转换为目标数组格式 const solution = Object.values(countMap); // 如果需要按日期倒序排序可加上这段代码 // solution.sort((a, b) => new Date(b.date) - new Date(a.date)); console.log(solution);
输出结果完全匹配你给出的期望格式。
内容的提问来源于stack exchange,提问作者Clumpsypenguin
相关产品推荐
相关产品推荐

