1. 程式人生 > 其它 >js中陣列去重

js中陣列去重

1.利用indexOf去重 IE8及以下版本不相容

function unique(arr){
     var newArr = [];
     for(var i = 0;i < arr.length;i++){
             //indexOf 返回值大於0,說明陣列有當期那值,返回-1說明沒有值
             if(newArr.indexOf(arr[i]) == -1){
                     newArr.push(arr[i]);
             }           
    }
    return  newArr;
}
var arr = [1,2,3,4,2,3,1,2,3,4,2]; console.log(unique(arr));//[1,2,3,4]

2.利用物件去重 (物件的特性:屬性不重複)

//利用物件去重
function unique(arr){
    var obj = {};
    var newArr = [];
    for(var i = 0;i < arr.length;i++){
        if(!obj[arr[i]]){
            obj[arr[i]] = 'abc';
            newArr.push(arr[i]);
        }
    }
    
return newArr; } var arr = [1,6,6,7,3,4,3,2,3,5,5,4,3,1,4]; console.log(unique(arr));

3.sort()方法去重

// 利用sort()方法去重
function unique(arr){
    var a = arr.sort(function(a,b){return a- b})
    var newArr = [a[0]];
    for(var i = 0;i <arr.length;i++){
        if(newArr[newArr.length-1] !== arr[i]){
            newArr.push(arr[i]);
        }
    }
    
return newArr; }

4.利用雙重for迴圈去重

// 利用雙重for迴圈去重
function unique(arr) {
    var newArr = [arr[0]];
    for (var i = 0; i < arr.length; i++) {
        var ret = false;
        for (var j = 0; j < newArr.length; j++) {
            if (arr[i] == newArr[j]) {
                ret = true;
                break;
            }
        }
        if (ret == false) {
            newArr.push(arr[i]);
        }

    }
    return newArr;
}
console.log(unique(arr));

5.利用函式遞迴去重

// 利用函式遞迴去重
function unique(arr){
    var arr1 = arr;
    var len = arr1.length;
    arr1.sort((a,b)=>{return a- b});
    function loop(index){
        if (index >= 1) {
            if(arr1[index] === arr1[index-1]){
                arr1.splice(index,1);
            }
            loop(index - 1);//遞迴loop,然後陣列去重
        }
    }
    loop(len - 1);
    return arr1;
}
console.log(unique(arr));