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

如何从对象数组中取前80个唯一元素并实现每满80个重新计数?

实现方案

你需要遍历数组时实时跟踪当前周期的已出现值,累计满80个唯一元素就重置状态继续处理剩余数据,实现代码如下:

const result = [];
let currentBatch = [];
let seen = new Set();

for (const item of DATA) {
  // 跳过当前周期已存在的重复值
  if (seen.has(item.Numbers)) continue;

  seen.add(item.Numbers);
  currentBatch.push(item);

  // 累计满80个则归档当前批次,重置计数
  if (currentBatch.length === 80) {
    result.push(currentBatch);
    currentBatch = [];
    seen.clear();
  }
}

// 处理末尾不足80个的剩余数据
if (currentBatch.length) {
  result.push(currentBatch);
}

逻辑说明

  • 采用单次遍历实现,时间复杂度为O(n),比你原有逻辑的O(n²)性能提升明显,处理1500条数据毫无压力
  • 每个批次内仅保留Numbers字段唯一的元素,满80个就重置去重集合,同一个Numbers值可以在不同批次出现,完全匹配你“每找到80个唯一元素就重新开始计数”的需求
  • 最终返回的result是二维数组,每个子数组对应一个批次的元素;如果你需要扁平化的一维结果,直接调用result.flat()即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:36:02