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

如何在JS中使用filter方法实现去重且不额外操作数组

JavaScript filter方法实现去重输出方案

直接在原有filter方法的回调中补充去重判断即可,无需额外对数组做预处理操作,修改后的代码如下:

const test = 'This is Right';
const test1 = 'This is wrong';
const test2 = 'This is Right';
const test3 = 'The word is hello'

const result = [test, test1, test2, test3].filter((value, index, arr) => 
  // 保留真值 + 仅保留元素第一次出现的项
  value && arr.indexOf(value) === index
).join(' - ');
console.log(result);

运行后输出结果为:

This is Right - This is wrong - The word is hello

实现逻辑说明

filter回调函数默认支持三个入参:当前遍历值value、当前遍历下标index、被遍历的原始数组arr:

  • 原有value判断保留,用来过滤空字符串、undefined、null等假值
  • 新增arr.indexOf(value) === index判断:indexOf会返回元素在数组中第一次出现的下标,只有当前遍历下标和首次出现下标一致时才会保留该元素,自动过滤后续重复的同值元素
  • 如果数组元素为引用类型(对象、数组等),仅需要把上述的等值判断替换为自定义的比对规则即可,整体代码结构不需要调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:54:00