尽可能多的写出数组去重的方法。
一、利用ES6 Set去重(ES6中最常用)
1 | function unique (arr) { |
用解构赋值来一波简写
1 | [...new Set(arr)] |
不考虑兼容性,这种去重的方法代码最少。这种方法还无法去掉“{}”空对象,后面的高阶方法会添加去掉重复“{}”的方法。
二、利用for嵌套for,然后splice去重(ES5中最常用)
1 | function unique(arr) { |
双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。
三、indexOf
1 | function unique(arr) { |
新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。
四、includes
1 | function unique(arr) { |
五、filter
1 | function unique(arr) { |
六、Map
1 | function arrayNonRepeatfy(arr) { |
创建一个空Map数据结构,遍历需要去重的数组,把数组的每一个元素作为key存到Map中。由于Map中不会出现相同的key值,所以最终得到的就是去重后的结果。
七、递归
1 | function unique(arr) { |
八、reduce+includes
1 | function unique(arr) { |
九、利用hasOwnProperty
1 | function unique(arr) { |
利用hasOwnProperty 判断是否存在对象属性