数组去重的三种方法❗

252 阅读1分钟

方法1:双for去重

for(var i = 0; i < ary.length; i++){
        // 循环第几轮
        var temp = ary[i];
        for(var j = i+1; j < ary.length; j++){
            if(temp === ary[j]){//两者相等则进行下一步
                ary.splice(j,1)//从j这项删除  删除一项
                //数组整个往前进了一位 数组的塌陷
                j--
            }
        }
    }

方法2:利用对象的属性名不能重复

   var ary = [1,4,1,4,2,1,5,1,2,2,4,2,4,2];
   var obj = {};
   ary.forEach(function(v){
       obj[v] = v // obj[1] = 1;
   })
   console.log(obj);
   var arr = [];
   for(var k in obj){
       arr.push(obj[k])
   }

利用 indexof和lastindexof去重

    function unique3(arr) {
        //若indexof和lastindexof得到的值不一样  说明后面有重复
        for (var i = 0; i < arr.length; i++) {
            var n = arr.indexOf(arr[i]),
                m = arr.lastIndexOf(arr[i])
            if (n !== m) {
                arr.splice(m, 1);
                i--;
            }
        }
        return arr;
    }