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

如何在JavaScript中移除对象数组中的重复键值对?

移除数组对象中重复键值对的实现方法

给定如下数组:

const arr1 = [
  {
    "Param1": "20",
    "Param2": "8",
    "Param3": "11",
    "Param4": "4",
    "Param5": "18",
    "Param6": "20",
    "Param7": "8"
  },
  {
    "Param6": "21",
    "Param7": "8",
    "Param8": "11",
    "Param9": "4",
    "Param10": "18"
  },
  {
    "Param1": "20",
    "Param2": "8",
    "Param3": "10"
  }
]

需要实现的效果是:移除整个数组中键和值完全相同的键值对,仅保留首次出现的实例,最终得到如下结果:

[
  {
    "Param1": "20",
    "Param2": "8",
    "Param3": "11",
    "Param4": "4",
    "Param5": "18",
    "Param6": "20",
    "Param7": "8"
  },
  {
    "Param6": "21",
    "Param8": "11",
    "Param9": "4",
    "Param10": "18"
  },
  {
    "Param3": "10"
  }
]

实现方案

可以用Set来记录已经出现过的键值对组合,遍历数组时过滤掉重复的键值对,具体代码如下:

const arr1 = [
  {
    "Param1": "20",
    "Param2": "8",
    "Param3": "11",
    "Param4": "4",
    "Param5": "18",
    "Param6": "20",
    "Param7": "8"
  },
  {
    "Param6": "21",
    "Param7": "8",
    "Param8": "11",
    "Param9": "4",
    "Param10": "18"
  },
  {
    "Param1": "20",
    "Param2": "8",
    "Param3": "10"
  }
];

// 用Set存储已出现的键值对,格式为"键:值"作为唯一标识
const seenPairs = new Set();

const uniqueArr = arr1.map(obj => {
  const filteredObj = {};
  // 遍历当前对象的所有键值对
  for (const [key, value] of Object.entries(obj)) {
    const pairKey = `${key}:${value}`;
    // 如果这个键值对没出现过,就保留并记录
    if (!seenPairs.has(pairKey)) {
      filteredObj[key] = value;
      seenPairs.add(pairKey);
    }
  }
  return filteredObj;
});

console.log(uniqueArr);

逻辑说明

  1. 初始化seenPairs集合,用来存储已经处理过的键值对组合,用键:值的字符串形式作为唯一标识,确保不会重复。
  2. 遍历原数组中的每个对象,对每个对象的键值对逐一检查:
    • 若当前键值对组合不在seenPairs中,就将其加入新对象filteredObj,并把组合存入seenPairs。
    • 若已经存在,则跳过该键值对。
  3. 最终返回的uniqueArr就是处理后的结果,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:52:45