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

如何使用JS合并数组中连续出现的相同字符串元素

JavaScript连续重复元素合并去重方案

原有代码错误原因

  • 循环判断逻辑中额外执行了i++,和for循环本身的自增逻辑叠加,会跳过半数索引位的元素
  • 判断条件误用单个元素变量item取索引,实际需要对比原数组的相邻元素

简洁实现

1. 单行filter实现(推荐)

仅需一行逻辑即可完成需求,性能与可读性都很高:

const items = ['a', 'a', 'b', 'a', 'a'];
const uniqueInRow = items.filter((item, idx) => item !== items[idx - 1]);
// 输出结果:['a', 'b', 'a']

逻辑说明:过滤规则为只保留「和前一个元素不相等」的元素,数组第一位的前一个元素为undefined,会自动通过校验被保留,无需额外判断边界。

2. reduce实现(适合需要扩展逻辑的场景)

如果后续需要在去重同时加入其他处理逻辑,可以用reduce实现:

const items = ['a', 'a', 'b', 'a', 'a'];
const uniqueInRow = items.reduce((res, cur) => {
  // 兼容旧版JS可将res.at(-1)替换为res[res.length - 1]
  if (res.at(-1) !== cur) res.push(cur);
  return res;
}, []);
// 输出结果:['a', 'b', 'a']

内容的提问来源于stack exchange,提问作者x-ray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:57:00