js数组去重(4种方法)

哎哟,说到数组去重,我那会儿刚入行那会儿,就栽在这上面了。
记得那是一个阳光明媚的下午,我在一个项目里用双重遍历法去重,结果你猜怎么着?数据量一大,电脑直接卡死,那叫一个惨啊!那时候我就想,这方法虽然简单,但效率真不行。

后来啊,我就开始研究其他的去重方法。
我记得有一次,我在一个培训课上,老师讲到了使用Set去重,那效率简直让我眼前一亮。
我赶紧回去用了一下,效果确实好,再也不用担心数据量大了会卡机了。

还有一次,我碰上一个项目,要求去重的同时还要保留原始数组的顺序。
那会儿我就用了个filter方法,结合条件判断去重,虽然代码看起来有点绕,但最后还是搞定了。
不过,这方法用起来还是得有点耐心,得好好理解filter和条件判断的逻辑。

至于indexOf方法去重,那也是我踩过的坑。
有一次,我为了追求效率,直接用了这个方法,结果发现它有个大bug,就是它会把数组中第一个出现的重复元素保留,后面的都给删了。
幸好项目及时发现问题,不然就出大事了。

总之啊,这数组去重的方法,各有各的优缺点,得根据实际情况来选。
像我现在,一般优先考虑Set去重,简单高效,还不会出错。
不过,这块我也只是浅尝辄止,深入的东西我还不敢乱讲。
嘿嘿,跟你说这些,就是想让你知道,这编程嘛,得不断摸索,踩坑是难免的,关键是要学会总结经验。

ES6中如何用Set实现数组去重

Set去重简单高效。

展开运算符转Set转数组。
Array.from()转Set转数组。

Set时间复杂度O(n)。
传统方法O(n^2 )慢。

类型不转换。
NaN视为相同。

对象引用去重不行。
JSON.stringify可能出问题。

Map按属性去重。
Lodash _.uniqBy灵活。

简单用Set展开。
对象用Map或Lodash。