1. 程式人生 > >js中最簡單最實用的陣列去重方法!

js中最簡單最實用的陣列去重方法!

js陣列去重是比較常見的陣列操作方式之一,網上有很多關於陣列去重的部落格文章,方法各式各樣,但有些方法實用性很差,很容易造成不必要的麻煩,所以我們需要去其糟粕取其精華,下面我們就整理一些比較實用的陣列去重方法。

一、for迴圈巢狀,利用splice去重

此方法是比較常用的方法之一,也是es5中比較實用的方法之一。話不多說,上程式碼:

function newArr(arr){
    for(var i=0;i<arr.length;i++){
        for(var j=i+1;j<arr.length;j++)
            if(arr[i]==arr[j]){ 
            //如果第一個等於第二個,splice方法刪除第二個
            arr.splice(j,1);
            j--;
            }
        }
    }
    return arr;
}

var arr = [1,1,2,5,6,3,5,5,6,8,9,8];

console.log(newArr(arr))

二、建新陣列,利用indexOf去重

此方法也是es5中比較簡單的方法之一,基本思路是新建一個數組,原陣列遍歷傳入新陣列,判斷值是否存在,值不存在就加入該新陣列中;值得一提的是,方法“indexOf”是es5的方法,IE8以下不支援。話不多說,上程式碼:


function newArr(array){ 
    //一個新的陣列 
    var arrs = []; 
    //遍歷當前陣列 
    for(var i = 0; i < array.length; i++){ 
        //如果臨時數組裡沒有當前陣列的當前值,則把當前值push到新數組裡面 
        if (arrs.indexOf(array[i]) == -1){ 
            arrs.push(array[i])
        }; 
    } 
    return arrs; 
}

var arr = [1,1,2,5,5,6,8,9,8];

console.log(newArr(arr))

三、ES6中利用Set去重

此方法是所有去重方法中程式碼最少的方法,程式碼如下:

function newArr(arr){
    return Array.from(new Set(arr))
}

var arr = [1,1,2,9,6,9,6,3,1,4,5];

console.log(newArr(arr))