如何对双数组中同日期对应的数据值合并求和?
同一日期对应数据求和的实现方法
你可以通过以下两种常见方式实现需求:
方法一:使用Map(推荐,保持插入顺序)
利用Map存储日期与对应数值的累计和,遍历原数组完成累加后,再转换为目标数组:
const data = [250, 250, 500, 500]; const labels = ['2022-05-10', '2022-06-10', '2022-07-10', '2022-07-10']; const sumMap = new Map(); // 遍历数组累加同一日期的数据 for (let i = 0; i < labels.length; i++) { const date = labels[i]; const value = data[i]; sumMap.set(date, (sumMap.get(date) || 0) + value); } // 转换为目标数组 const newLabels = Array.from(sumMap.keys()); const newData = Array.from(sumMap.values()); console.log('const data =', newData); // 输出: const data = [250, 250, 1000] console.log('const labels =', newLabels); // 输出: const labels = ['2022-05-10', '2022-06-10', '2022-07-10']
方法二:使用普通对象
通过对象的属性存储日期与累计值,同样能实现需求:
const data = [250, 250, 500, 500]; const labels = ['2022-05-10', '2022-06-10', '2022-07-10', '2022-07-10']; const sumObj = {}; // 遍历累加 for (let i = 0; i < labels.length; i++) { const date = labels[i]; const value = data[i]; sumObj[date] = (sumObj[date] || 0) + value; } // 提取目标数组 const newLabels = Object.keys(sumObj); const newData = Object.values(sumObj); console.log('const data =', newData); console.log('const labels =', newLabels);
核心逻辑说明
- 遍历原
labels和data数组,将每个日期对应的数值累加到存储结构(Map/对象)中 - 从存储结构中提取去重后的日期作为新的
labels,提取累计值作为新的data
内容的提问来源于stack exchange,提问作者user17751258
相关产品推荐
相关产品推荐

