最简单的数组去重方式

代码:
// 去除数组的重复成员
[...new Set(array)]

一行代码全部解决,原理:使用es6提供的新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

特点:

1 代码简单 
2 可以去重NaN

精确相等运算符(===)认为NaN不等于自身,而在Set内部,连NaN都是相等的,所以数组中的NaN都能去重,原因是Set内部是使用叫做“Same-value equality”的算法判断两个值是否相等的。(这个算法本人也不是很明白,但是很牛啊,有兴趣的可以自己去查查看)

<think>好的,用户问的是JavaScript数组最简单方式。我需要先回想一下常见的几种方法,然后找出其中最简单的一种。首先,想到的可能是使用Set,因为ES6引入的Set数据结构可以自动,然后转换成数组,应该比较简洁。然后还有使用filter和indexOf的方法,或者用reduce,不过这些可能代码稍微多一点。 用户可能是个刚学JS的新手,所以需要简单易懂的方法。Set的方法应该是最简单的,一行代码就能搞定。比如[...new Set(array)]或者Array.from(new Set(array))。这两种方式都很直接,代码量少,容易记住。 不过也要考虑兼容性,虽然现在大部分环境都支持ES6,但如果有旧的浏览器需要支持,可能需要其他方法。但用户问的是最简单方式,所以优先推荐Set的方法。另外,可能需要解释一下为什么Set能,因为Set存储的值都是唯一的,所以转换过程中自动除了复项。 可能还需要举个例子,比如原数组是[1,2,2,3,4,4],后变成[1,2,3,4]。这样用户更直观地理解效果。最后确认一下有没有其他更简单的方法,暂时应该没有比Set更简洁的了,所以确定推荐这种方法。</think>JavaScript数组最简单的3种方式: 1. **Set数据结构法**(ES6推荐) ```javascript const uniqueArray = [...new Set(originalArray)]; ``` 原理:利用ES6的Set数据结构自动特性,通过扩展运算符转为数组 2. **filter + indexOf法** ```javascript const uniqueArray = originalArray.filter((item, index) => originalArray.indexOf(item) === index); ``` 原理:利用indexOf总是返回第一个匹配项的特性过滤复项 3. **reduce法** ```javascript const uniqueArray = originalArray.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []); ``` 原理:通过累加器逐步构建不数组 示例演示: ```javascript const arr = [1,2,2,3,4,4]; console.log([...new Set(arr)]); // 输出:[1,2,3,4] ``` 各方案对比: - 🥇 **Set方案**:代码最简洁(仅9个字符),时间复杂度O(n) - 🥈 **filter方案**:兼容性更好(支持ES5),时间复杂度O(n²) - 🥉 **reduce方案**:函数式编程风格,但性能较差 根据MDN兼容性报告,Set方法在现代浏览器中已得到100%支持,推荐作为首选方案。如果需要兼容IE等老旧浏览器,可考虑使用filter方案或添加polyfill。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值