如何在JavaScript中按出生年份分组合并数组对象?
实现方案
可以通过数组的reduce方法先完成分组,再转换为目标结构,代码如下:
const array = [ { yearBirth: 1995, name: 'daniel' }, { yearBirth: 1995, name: 'avi' }, { yearBirth: 1993, name: 'john' }, { yearBirth: 1993, name: 'david' }, ]; // 按yearBirth分组,收集对应姓名对象 const groupedData = array.reduce((acc, current) => { const year = current.yearBirth; // 若当前年份未在分组对象中,初始化空数组 if (!acc[year]) { acc[year] = []; } // 将当前项的name包装成对象存入对应年份数组 acc[year].push({ name: current.name }); return acc; }, {}); // 转换为目标结构 const finalResult = { yearBirth: Object.entries(groupedData).map(([year, names]) => ({ [year]: names })) }; console.log(finalResult);
步骤说明
- 分组处理:使用
reduce遍历原数组,以yearBirth的值作为键,把每个元素的name字段包装成对象后,存入对应年份的数组中,得到一个以年份为键、姓名对象数组为值的临时对象。 - 结构转换:通过
Object.entries将临时对象转为键值对数组,再用map把每一组键值对转换成{年份: 姓名数组}的对象,最后将这些对象存入yearBirth数组,得到你需要的结构。
内容的提问来源于stack exchange,提问作者danielmax123
相关产品推荐
相关产品推荐

