点击右上方红色按钮关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!
在JavaScript中,数组去重的问题,在什么时候会碰到,之一,写代码的时候。第二,面试的时候。记得有一次和同事一起吃饭的时候,也讨论过这个问题,当时就是轮流说一思路,一来我去的,竟然发现,原来现在数组去重有这么多种 。
那么,今天,就来列一下数组去重的多种 。由于时间关系,先列五种,另外四到五种下篇来续。
准备测试数组
测试数组可以是纯数字类型的情况,也可以是复杂数据类型的情况。测试数组如下。
let arr = [1, 1, 'true', 'true',true, true, undefined, undefined,null, null, NaN, NaN, 'NaN',0, 0, 'a', 'a', {}, {}]
一,利用Set 来处理
输出:[1,'true',true, undefined, null, NaN, 'NaN', 0, 'a', {}, {}]
注意一下,这个 并没有将空对象给去重掉。不要担心,总会有去掉的那一刻。
二,循环中使用splice去重
输出:[1, "true", undefined, NaN, NaN, "NaN", 0, "a", {}, {}]
注意,NaN没有去重掉,因为NaN!=NaN。同时空对象也没有去重。不要担心,总会有去掉的那一刻。
三,老朋友indexOf登场
输出:[1, "true", undefined, NaN, NaN, "NaN", 0, "a", {}, {}]
同样NaN和空对象没有去重掉。不要担心,总会有去掉的那一刻。
四,利用sort提前处理
输出:[0, 1, NaN, NaN, "NaN", {}, {}, "a", "true", undefined]
先用sort将数据进行排序,然后将排序后的结果进行遍历相邻元素比对,同样NaN和空对象没有去重掉。不要担心,总会有去掉的那一刻。
五,对象属性不能相同特性
输出:[0, 1, NaN, {}, "a", "true", undefined]
这种处理方式,将所有类型数据都去重了。不用在担心有去不了重的数据类型了。
最后总结一下:
数组去重,并不只这些 ,还有一些其他的思路。下篇继续给大家分析。