数组去重的几种方式

上篇我们写到了数组中包含多条对象的去重方式
数组中包含多条对象的去重方式,今天我们就写一下普通数组去重吧.

数组去重的几种方式:
> //我先声明一个数组备用
 >var arr=[0,0,1,'a',1,2,'b','a','a']
  1. arr.filter()
  var res = arr.filter(function(ele,index,array){
        return index === array.indexOf(ele);
    });
    console.log(res) 
  1. 先排序再去重
 function unique(arr) {
        var arr2 = arr.sort();
        var res = [arr2[0]];
        for(var i = 1; i < arr2.length; i++){
            if(arr2[i] !== res[res.length-1]){
                res.push(arr2[i]);
            }
        }
        return res;
    }
    console.log(unique(arr));
  1. 利用对象的属性去重
 function unique(arr){
        var res =[];
        var json = {};
        for(var i = 0; i < arr.length; i++){
            if(!json[arr[i]]){
                res.push(arr[i]);
                json[arr[i]] = 1;
            }
        }
        return res;
    }
    console.log( unique(arr));

4.利用下标查询

     function unique(arr){
        var newArr = [arr[0]];
        for(var i = 1; i < arr.length; i++){
            if(newArr.indexOf(arr[i]) == -1){
                newArr.push(arr[i]);
            }
        }
        return newArr;
    }
   console.log(unique(arr));
  1. 定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。
  function unique(arr) {
        var res = [arr[0]];
        for(var i = 0; i < arr.length; i++){
            var repeat = false;
            for(var j = 0; j < res.length; j++){
                if(arr[i] == res[j]){
                    repeat = true;
                    break;
                }
            }
            if(!repeat){
                res.push(arr[i]);
            }
        }
        return res;
    }
    console.log(unique(arr));
  1. es6的set方法
const res = new Set();
var arr =[0,0,1,'a',1,2,'b','a','a'];
arr.forEach(x => res.add(x)); 
console.log(s); 

······后续在加

你可能感兴趣的:(数组去重的几种方式)