You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并相同日期的对象数组并整合动态属性至目标数据结构

合并相同日期的对象数组并整合动态属性至目标数据结构

嘿,你已经离目标只差一步啦!问题就出在你之前把动态属性塞进了results数组里,而不是直接挂载到日期对应的对象上。咱们调整下reduce的逻辑就能搞定:

方案一:基于原思路优化(数组累加器)

这个方案和你原来的写法更接近,只是把属性合并逻辑改了:

const measures = [
  { "13798494-value": 0.207, readingDate: "26/06/2023" },
  { "4958469-value": 0.211 , readingDate: "26/06/2023" },
  { "13798494-value": 0.214 , readingDate: "27/06/2023" },
  { "4958469-value": 0.123, readingDate: "27/06/2023" }
];

const mergedMeasures = measures.reduce((acc, item) => {
  // 解构分离日期和所有动态属性(自动适配任意XX-value格式)
  const { readingDate, ...dynamicProps } = item;
  // 查找当前日期对应的已存在条目
  const existingEntry = acc.find(entry => entry.readingDate === readingDate);
  
  if (existingEntry) {
    // 若存在,直接把动态属性合并到已有对象中
    Object.assign(existingEntry, dynamicProps);
  } else {
    // 若不存在,创建新条目加入累加器
    acc.push({ readingDate, ...dynamicProps });
  }
  
  return acc;
}, []);

console.log(mergedMeasures);

方案二:用对象映射优化性能(大数据量更友好)

如果你的数组数据量比较大,用对象做中间映射会比每次find更高效(查找时间从O(n)降到O(1)):

const measures = [
  { "13798494-value": 0.207, readingDate: "26/06/2023" },
  { "4958469-value": 0.211 , readingDate: "26/06/2023" },
  { "13798494-value": 0.214 , readingDate: "27/06/2023" },
  { "4958469-value": 0.123, readingDate: "27/06/2023" }
];

const mergedMeasures = Object.values(
  measures.reduce((dateMap, item) => {
    const { readingDate, ...dynamicProps } = item;
    // 若当前日期还没在映射里,先初始化一个带日期的对象
    if (!dateMap[readingDate]) {
      dateMap[readingDate] = { readingDate };
    }
    // 合并动态属性到对应日期的对象中
    Object.assign(dateMap[readingDate], dynamicProps);
    return dateMap;
  }, {})
);

console.log(mergedMeasures);

关键改进点说明

  • 用{ readingDate, ...dynamicProps }解构:自动提取日期,同时把所有动态的XX-value属性打包成一个对象,完全不用硬编码属性名,完美适配你说的动态格式。
  • 直接合并属性到主对象:不再把属性塞进results数组,而是直接挂载到日期对应的对象上,这样就得到了你想要的扁平结构。

两种方案最终都会输出你期望的结果:

const measures = [
  { readingDate: "26/06/2023", "13798494-value": 0.207, "4958469-value": 0.211 },
  { readingDate: "27/06/2023", "13798494-value": 0.214, "4958469-value": 0.123 }
]

备注:内容来源于stack exchange,提问作者32423hjh32423

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:18:01