数组中日期相同的项,数量相加

这个返回数据当中,如何把日期yearmo相同的数据,它的crntonhdnum相加,然后push到数组里面,这个日期是动态的,所以判断的时候不能写死

img

该回答引用ChatGPT4与博主@晓码自在合作编写:

根据你的要求,可以这么实现:

js
let data = [/* 数据 */]; 
let result = [];

// 获取data中所有yearmo的值
let yearmos = data.map(item => item.yearmo);

// yearmos去重
let uniqueYearmos = [...new Set(yearmos)]; 

uniqueYearmos.forEach(yearmo => {
  // 筛选出yearmo相同的数据
  let filterData = data.filter(item => item.yearmo === yearmo);
  
  // 计算crntonhdnum总和
  let sum = filterData.reduce((total, item) => total + item.crntonhdnum, 0);
  
  // 构造结果对象
  let obj = {
    yearmo: yearmo,
    crntonhdnum: sum
  };
  
  // 添加到结果数组
  result.push(obj); 
});

console.log(result);
// [ { yearmo: '202301', crntonhdnum: 9.2 }, 
//   { yearmo: '202302', crntonhdnum: 10.23 },
//   ... ]

这个代码的流程是:

  1. 从原始数据data中提取所有的yearmo,使用Set去重得到唯一的yearmo值uniqueYearmos。
  2. 遍历每个uniqueYearmo,使用filter()方法筛选出yearmo相同的数据。
  3. 使用reduce()对这些数据的crntonhdnum字段求和,得到总和sum。
  4. 构造结果对象,包含yearmo和crntonhdnum(sum)。
  5. 添加到最终结果数组result中。
  6. 返回结果result数组。

这样,我们就可以按yearmo分组,并统计每个分组的crntonhdnum总和,这满足你的要求。