常见的数组去重

159 阅读1分钟

写在前面

在日常当中数组去重,我们经常会遇到,那么常见的数组去重有哪些呢?

1. 利用ES6 Set去重(ES6中最常用)

     let arr = [1,2,2,2,2,2,3,4]
        // 1. 利用ES6 Set去重(ES6中最常用)
     function unique (arr){
            return Array.from(new Set(arr));
            // return [...new Set(arr)];
     }
     console.log(unique(arr));

如果在不考虑兼容性的情况下,这种去重的方法代码量是最少的,但是这种方法还无法去掉“{}”空对象。

2. 利用for嵌套for,然后splice去重(ES5中最常用)

   function unique(arr) {
       for (var i = 0; i < arr.length; i++) {
          for (var j = i + 1; j < arr.length; j++) {
                    if (arr[i] == arr[j]) {
                        arr.splice(j, 1);
                        j--;
                    }
           }
        }
       return arr;
   }
  console.log(unique(arr));

3. 利用indexOf去重

       function unique (arr) {
            if (!Array.isArray(arr)) {
                console.log('type error');
                return
            }
            let array = []
            for (var i = 0;i<arr.length;i++) {
                if(array.indexOf(arr[i]) === -1){
                    array.push(arr[i]);
                }
            }
            return array
        }
       console.log(unique(arr));

4.利用对象属性去重

 function unique(arr) {
            if (!Array.isArray(arr)) {
                console.log('type error!');
                return
            }
            let res = [],
                obj = {};
            for (let i = 0; i < arr.length; i++) {
                if (!obj[arr[i]]) {
                    res.push(arr[i]) obj[arr[i]] = 1;
                } else {
                    obj[arr[i]]++;
                }
            }
            return res
 }