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

如何合并对象数组中重复date的name字段并删除重复对象?

合并数组中日期重复对象的名称字段

需求:检查对象数组中是否存在date字段重复的对象,若存在则将这些重复对象的name字段用“/”拼接,并移除重复对象。

现有实现代码:

var arr = [
    {name: "Adam", date: "25/11/2022" },
    {name: "Jorge", date: "25/11/2022" },
    {name: "Lucas", date: "24/11/2022" },
    {name: "Bob", date: "23/11/2022" }
]

function getUniqueListBy(arr, key) {
    return [...new Map(arr.map(item => [item[key], item])).values()]
}

const arr1 = getUniqueListBy(arr, 'date')
console.log(JSON.stringify(arr1))

现有代码的问题是使用Map去重时会直接覆盖重复date的对象,无法实现name字段的合并。

解决方案思路

  • 遍历数组,用一个对象按date字段分组,存储每个日期对应的名称列表
  • 遍历分组后的结果,将同一日期下的所有名称用“/”拼接,生成包含合并后名称和日期的新对象
  • 将所有新对象收集成最终的数组

完整实现代码

var arr = [
    {name: "Adam", date: "25/11/2022" },
    {name: "Jorge", date: "25/11/2022" },
    {name: "Lucas", date: "24/11/2022" },
    {name: "Bob", date: "23/11/2022" }
]

function mergeDuplicateDates(arr) {
    const dateMap = {};
    // 按date分组收集名称
    arr.forEach(item => {
        if (!dateMap[item.date]) {
            dateMap[item.date] = [];
        }
        dateMap[item.date].push(item.name);
    });
    // 转换为目标格式的数组
    return Object.entries(dateMap).map(([date, names]) => ({
        name: names.join(' / '),
        date: date
    }));
}

const arr1 = mergeDuplicateDates(arr);
console.log(JSON.stringify(arr1));

输出结果

[{"name":"Adam / Jorge","date":"25/11/2022"},{"name":"Lucas","date":"24/11/2022"},{"name":"Bob","date":"23/11/2022"}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:10:54