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

如何从含600+条目的对象中高效提取去重的eppo值?

提取并去重数组中eppo值的最快方法

针对你有600多条数据的场景,以下是几种高效的实现方式,按简洁性和性能优先级排序:

1. Set + Array.map(推荐,简洁且高效)

这是现代JavaScript中最简洁的实现,利用Set自动去重的特性,整体时间复杂度为O(n):

// 假设你的数据存在变量data中
const uniqueEppos = [...new Set(data.map(item => item.eppo))];

原理:

  • data.map(item => item.eppo):遍历数组提取所有eppo值,得到包含重复项的数组
  • new Set(...):将数组转为Set,自动剔除重复值
  • [...Set]:将Set展开回数组格式

2. 手动遍历+Map/对象(性能略优,适合极致场景)

如果追求极致性能(虽然600条数据下差异微乎其微),可以手动遍历一次数据,用Map或普通对象记录已出现的eppo:

用Map实现:

const eppoMap = new Map();
for (const item of data) {
  // 用eppo作为键,值随便存,只要标记已出现
  eppoMap.set(item.eppo, true);
}
const uniqueEppos = Array.from(eppoMap.keys());

用普通对象实现:

const eppoTracker = {};
for (let i = 0; i < data.length; i++) {
  const eppo = data[i].eppo;
  if (!eppoTracker[eppo]) {
    eppoTracker[eppo] = true;
  }
}
const uniqueEppos = Object.keys(eppoTracker);

原理:只遍历一次数组,遇到未记录的eppo就标记,最后提取所有已标记的键,时间复杂度同样是O(n)。

性能说明

对于600条数据的规模,上述几种方法的执行时间差距可以忽略不计。优先推荐第一种写法,代码更简洁易读,维护成本低;如果是处理百万级以上的超大数组,手动遍历的方法可能会有微弱的性能优势。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:10:21