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

如何检测并移除JavaScript数组中的重复连续三元组?

移除数组中重复的连续三元组

要检测并移除数组中重复出现的连续三元组,只保留每组三元组的首次出现,可以通过遍历数组并记录已出现的三元组来实现,具体方案如下:

实现思路

  1. 维护一个结果数组,用于存放去重后的最终元素
  2. 使用集合存储已出现过的三元组标识,实现快速重复检测
  3. 按步进3的方式遍历原数组:
    • 若当前位置能取到完整三元组,检查是否已记录过
    • 重复则跳过这三个元素,不重复则将其加入结果数组并记录
    • 数组末尾不足三个元素时,直接将剩余元素追加到结果中

代码实现

let array = [
  "string-1",
  "string-2",
  "string-3",
  "string-4",
  "string-5",
  "string-3",
  "string-4",
  "string-5",
  "string-6",
  "string-7",
  "string-8",
  "string-9",
  "string-10",
  "string-11",
  "string-9",
  "string-10",
  "string-11",
  "string-12"
];

const result = [];
const seenTriples = new Set();

let i = 0;
while (i < array.length) {
  // 检查是否有足够元素组成三元组
  if (i + 2 < array.length) {
    // 生成三元组的唯一标识,用JSON.stringify避免特殊字符冲突
    const tripleKey = JSON.stringify([array[i], array[i+1], array[i+2]]);
    
    if (seenTriples.has(tripleKey)) {
      // 跳过重复的三元组
      i += 3;
      continue;
    }
    
    seenTriples.add(tripleKey);
    result.push(array[i], array[i+1], array[i+2]);
    i += 3;
  } else {
    // 处理剩余的1-2个元素
    result.push(...array.slice(i));
    break;
  }
}

console.log(result);
// 输出:["string-1", "string-2", "string-3", "string-4", "string-5", "string-6", "string-7", "string-8", "string-9", "string-10", "string-11", "string-12"]

注意事项

  • 若三元组元素包含逗号等特殊字符,用JSON.stringify生成标识比字符串拼接更可靠,能避免误判重复
  • 该方案时间复杂度为O(n),遍历一次数组即可完成去重,效率较高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:57:51