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

JavaScript中从对象数组生成多对象并实现ID去重方法

正确实现方式及ID去重方案

问题分析

你之前的代码失败原因有两个:

  • 对象里重复定义了属性,后面的属性会直接覆盖前面的,最终每个原对象只能生成一个子对象
  • map方法每次遍历只能返回一个元素,无法一次生成两个子对象

基础实现(无去重)

使用flatMap替代map,它允许我们每次遍历返回一个包含两个子对象的数组,最终自动扁平化合并成目标数组:

const data = [
  {
    "id": 1,
    "locationone": "California, United States",
    "idtwo": 2,
    "locationtwo": "Atherton, United States"
  },
  {
    "id": 3,
    "locationone": "London",
    "idtwo": 4,
    "locationtwo": "New Jersey"
  }
];

const result = data.flatMap(item => [
  { id: item.id, location: item.locationone },
  { id: item.idtwo, location: item.locationtwo }
]);

console.log(result);

执行后就能得到你期望的结果数组。

确保ID唯一的实现

如果原数组中存在重复的id或idtwo值,可以通过Set记录已出现的ID,配合filter过滤重复项:

const seenIds = new Set();
const uniqueResult = data.flatMap(item => [
  { id: item.id, location: item.locationone },
  { id: item.idtwo, location: item.locationtwo }
]).filter(item => {
  if (seenIds.has(item.id)) {
    return false;
  }
  seenIds.add(item.id);
  return true;
});

console.log(uniqueResult);

这个方案会保留每个ID第一次出现的子对象,后续重复ID的对象会被过滤掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:45:20