JavaScript实现按日期合并多对象属性至单个对象
按DATE_DT字段合并对象数组,整合同一日期的LOCATION数据
输入数据
const originalArray = [ { "LOCATION":17, "Stock_In_Area":39.0709838867, "DATE_DT":"2021-03-07", }, { "LOCATION":17, "Stock_In_Area":41.8843955994, "DATE_DT":"2021-03-14", }, { "LOCATION":612, "Stock_In_Area":8.4867076874, "DATE_DT":"2021-03-07", }, { "LOCATION":612, "Stock_In_Area":9.2035646439, "DATE_DT":"2021-03-14", }, ];
解决方案代码
const mergedArray = Object.values(originalArray.reduce((acc, item) => { const date = item.DATE_DT; // 初始化该日期对应的对象 if (!acc[date]) { acc[date] = { date }; } // 将LOCATION转为字符串作为键,赋值库存数据 acc[date][item.LOCATION.toString()] = item.Stock_In_Area; return acc; }, {}));
代码说明
- 利用
Array.reduce()遍历原数组,以DATE_DT为键构建分组对象 - 每个日期分组下,自动将
LOCATION转为字符串属性名,对应存储Stock_In_Area的值 - 最后通过
Object.values()将分组对象转换为目标数组结构
输出结果
[ { "date": "2021-03-07", "17": 39.0709838867, "612": 8.4867076874 }, { "date": "2021-03-14", "17": 41.8843955994, "612": 9.2035646439 } ]
内容的提问来源于stack exchange,提问作者Elijah Niko
相关产品推荐
相关产品推荐

