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

ES6中如何为对象数组的重复id添加后缀实现差异化(不删除重复项)

实现代码

方案1:生成新数组(不修改原数组)

const formatArr = (arr) => {
  // 用Map记录每个id的出现次数
  const idCounter = new Map();
  return arr.map(item => {
    // 取当前id的计数,不存在则默认0
    const count = idCounter.get(item.id) || 0;
    // 更新计数
    idCounter.set(item.id, count + 1);
    // 解构原对象,替换id后返回新对象
    return {
      ...item,
      id: `${item.id}_${count}`
    };
  });
};

// 调用示例
const processedArr = formatArr(arr);

方案2:直接修改原数组

const idCounter = new Map();
arr.forEach(item => {
  const count = idCounter.get(item.id) || 0;
  idCounter.set(item.id, count + 1);
  item.id = `${item.id}_${count}`;
});

逻辑说明

  • 借助Map结构存储每个id的累计出现次数,只需遍历数组1次即可完成处理,时间复杂度为O(n),性能表现优异
  • 相同id的后缀从0开始依次递增,完全匹配预期输出效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:45:03