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

如何在JavaScript中移除数组中的所有唯一对象?

保留数组中重复对象的实现方案

要实现只保留数组中重复出现的对象实例(剔除仅出现一次的对象),可以按以下步骤操作:

核心思路

JavaScript里对象是引用类型,直接比较只会判断引用是否相同,而非内容是否一致。所以我们需要先把对象转换成能唯一标识其内容的字符串,统计每个内容的出现次数,再过滤出出现次数≥2的所有对象实例。

实现代码

var myArray = [
  { name: 'tom', country: 'america', favoriteFood: 'pizza' },
  { name: 'gary', country: 'france', favoriteFood: 'pasta' },
  { name: 'tom', country: 'america', favoriteFood: 'pizza' },
  { name: 'lou', country: 'brazil', favoriteFood: 'fries' },
  { name: 'gary', country: 'france', favoriteFood: 'pasta' },
  { name: 'marge', country: 'russia', favoriteFood: 'steak' }
];

// 统计每个对象内容的出现次数
const countMap = {};
myArray.forEach(obj => {
  // 将对象转为字符串,内容一致的对象会生成相同字符串
  const key = JSON.stringify(obj);
  countMap[key] = (countMap[key] || 0) + 1;
});

// 过滤出所有出现次数≥2的对象
const result = myArray.filter(obj => {
  const key = JSON.stringify(obj);
  return countMap[key] >= 2;
});

console.log(result);

补充说明

  • JSON.stringify(obj)会把对象内容转换成字符串,确保内容完全相同的对象得到同一个键,以此准确统计出现次数。
  • 这个方案适用于对象仅包含基本类型(字符串、数字、布尔值等)的场景。如果对象包含函数、undefined或循环引用,需要自定义生成唯一键的逻辑(比如遍历对象的所有键值对拼接成字符串)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:01:23