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

JavaScript数组对象按日期合并失败问题排查

问题排查:按date合并对象时visits和miles属性未被合并?

问题背景

我清楚这类对象合并问题存在诸多变体,已经参考相关答案推进到当前步骤,但始终得不到预期结果,特此求助。

初始数据是包含date字段(格式为"月/日/年")的对象数组,已移除undefined值,需求是按date字段合并同日期的对象。

合并前的初始数据

[{
  data: {
    hours: ["2"],
    timeIn: ["2023-05-01T18:00:00Z"],
    timeOut: ["2023-05-01T20:00:00Z"],
    type: ["Client"]
  },
  date: "5/1/2023",
  entries: 2
}, {
  data: {
    hours: [2, 2],
    timeIn: ["2023-05-10T18:00:00Z", "2023-05-10T16:00:00Z"],
    timeOut: ["2023-05-10T20:00:00Z", "2023-05-10T18:00:00Z"],
    type: ["Client"]
  },
  date: "5/10/2023",
  entries: 4
}, {
  date: "5/1/2023",
  visits: 2
}, {
  date: "5/10/2023",
  visits: 4
}, {
  date: "5/1/2023",
  miles: 20
}, {
  date: "5/10/2023",
  miles: 40
}]

我编写的合并代码

var merged = [];

cleaned.forEach(function(item) {
  var idx;
  var found = merged.some(function(el, i) {
    idx = el.date === item.date ? i : null;
    return el.date === item.date;
  });
  if (!found) {
    merged.push(item);
  } else if (idx !== null) {
    console.log(Object.keys(item))
    for (k in Object.keys(item)) {
      console.log(k)
      if (item.hasOwnProperty(k)) {
        merged[idx][k] = item[k];
      }
    }
  }
});

实际输出结果(缺失visits和miles属性)

[{
  data: {
    hours: ["2"],
    timeIn: ["2023-05-01T18:00:00Z"],
    timeOut: ["2023-05-01T20:00:00Z"],
    type: ["Client"]
  },
  date: "5/1/2023",
  entries: 2
}, {
  data: {
    hours: [2, 2],
    timeIn: ["2023-05-10T18:00:00Z", "2023-05-10T16:00:00Z"],
    timeOut: ["2023-05-10T20:00:00Z", "2023-05-10T18:00:00Z"],
    type: ["Client"]
  },
  date: "5/10/2023",
  entries: 4
}]

疑问

我已经用hasOwnProperty判断属性合法性,且当date匹配时idx也不为null,为什么visits和miles属性没有被合并到最终结果里?

内容的提问来源于stack exchange,提问作者Jowz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:32:11