JavaScript數組去重的總結

JavaScript數組去重方法的總結

前言

在JavaScript中數組是比較經常使用的,本文中總結了下數組去重的幾種經常使用方法,若有問題,請指正。數組

簡單粗暴的一種,ES6中set方法:
var arr = [1,2,2,3,3,4,5,5];
console.log([...new Set(arr)])  //[1, 2, 3, 4, 5]
遍歷數組,創建新數組,利用 indexOf()判斷是否存在於新數組中,不存在則push到新數組,最後返回新數組:
function removeSame(arr){
    var ret = [];
    for(var i=0,j=arr.length;i<j; i++){
        if(ret.indexOf(arr[i]) === -1){
            ret.push(arr[i])
        }
    }
    return ret;
}
var arr1 = [1,2,2,2,3,3,4,4,5,5];
console.log(removeSame(arr1))  //[1, 2, 3, 4, 5]
遍歷數組,利用 object對象保存數組值,判斷數組值是否已經保存在object中,未保存則push到新數組並用object[arrayItem]=1的方式記錄保存:
function removeSame(arr){
    var temp = {},ret = [];
    for (var i = 0,j=arr.length;i<j;i++){
        debugger;
        if(!temp[arr[i]]){
            temp[arr[i]] = 1;
            ret.push(arr[i])
        }
    }
    return ret;
}
var arr2 = [1,2,2,2,3,3,4,4,5];
console.log(removeSame(arr2))   //[1, 2, 3, 4, 5]
根據數組下標判斷法, 遍歷數組,利用indexOf()判斷元素的值是否與當前索引相等,如相等則加入
function removeSame(arr){
    var ret = [];
    arr.forEach(function(ele,index){
        if(arr.indexOf(ele) === index){
            ret.push(ele)
        }
    })
    return ret;
}
var arr3 = ["apple","apple","orange","orange","banana"]
console.log(removeSame(arr3))    //["apple", "orange", "banana"]
數組先進行排序,而後比較原數組與新數組,一頭一尾進行去重:
function deleteSame(arr){
    var ret = [],end;
    debugger;
    arr.sort();   // ["apple","apple","banana","orange","orange",];
    end = arr[0];
    ret.push(arr[0]);
    for(var i = 1; i<arr.length; i++){
        if(arr[i] != end){
            ret.push(arr[i]);
            end = arr[i];
        }
    }
    return ret;
}
var arr4 = ["apple","apple","orange","orange","banana"];
console.log(deleteSame(arr4)) //["apple", "banana", "orange"]
利用filter()方法循環對數組中的元素調用callback函數, 若是返回true 保留,若是返回false 過濾掉, 返回新數組,老數組不變
var arr_unique = ["apple","apple","orange","orange","banana"].filter(function(element,index,array){
    return array.indexOf(element) === index;
})
console.log(arr_unique) //["apple", "orange", "banana"]

簡單的總結了6種方法,若有不足請指正,能夠繼續補充,你們共同窗習。app

相關文章
相關標籤/搜索