1. 程式人生 > >js數組去重方法集合

js數組去重方法集合

位置 沒有 元素 ++ console () 循環 -- mem

//第一種方法,新建一個空數組,將原來的數組循環逐個與新數組的成員做比較,如果新數組沒有該元素就push進來
var arr = [‘a‘, 1, 1, 1, 2, 4, 4, ‘b‘, ‘c‘, ‘a‘];
        var newArr = [];
        var len = arr.length;
        for (i = 0; i < len; i++) {
            var flag = false;
            for (var member of newArr) {
                if (member === arr[i]) {
                    flag = true;
                    break
                }
            }
            if (!flag) {
                newArr.push(arr[i])
            }
        }
        console.log(‘1111111111111111‘, newArr)

  

//第二種,兩層循環,相互比較,如果相同就刪除
        var arr2 = [1, 2, 3, ‘a‘, ‘b‘, 3, 2, ‘c‘, ‘a‘];
        var len2 = arr2.length;
        while (len2-- > 0) {
            for (let i = 0; i < len2; i++) {
                if(arr2[i]==arr2[len2]){
                    arr2.splice(i,1)
                    break
                }
                
            }
        }
        console.log(‘2222222222222‘,arr2)

  

//3.借助indexOf()方法判斷此元素在該數組中首次出現的位置下標與循環的下標是否相等
var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5];
function rep(arr) {
    for (var i = 0; i < arr.length; i++) {
        if (arr.indexOf(arr[i]) != i) {
            arr.splice(i,1);//刪除數組元素後數組長度減1後面的元素前移
            i--;//數組下標回退
        }
    }
    return arr;
}
var a1 = rep(arr);
console.log(a1);

  

//4.借助indexOf()和一個空數組
var arr3=[‘f‘,‘c‘,1,2,3,4,4,4,‘v‘,‘f‘];
        var newArr3=[];
        for(i=0;i<arr3.length;i++){
            if(newArr3.indexOf(arr3[i])<0){
                newArr3.push(arr3[i])
            }
        }
        console.log(‘33333333333333‘,newArr3)

  

//5.filter方法
        var arr4 = [1, 2, 3, 1,2,5,6]
        var arr4temp=arr4.filter(function(ele,index,self){
            return self.indexOf(ele)===index;
        })
        console.log(arr4temp)

  

js數組去重方法集合