对象数组去重

65 阅读1分钟

实现一个数组去重

function unique(arr){            
    for(var i=0; i<arr.length; i++){
        for(var j=i+1; j<arr.length; j++){
            if(arr[i]===arr[j]){       
                arr.splice(j,1);
                j--;
            }
        }
    }
return arr;
}

var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
 console.log(unique(arr))

对象数组去重


const isObject = (obj) => typeof obj === 'object' && obj !== null    

function eq(obj1,obj2){
    if(!isObject(obj1) || !isObject(obj2)){
        return obj1 === obj2
    }
    if(obj1 === obj2){
        return true
    }
    if(Object.keys(obj1).length !== Object.keys(obj2).length){
        return false
    }

    for (const key in obj1) {
        const flag = eq(obj1[key],obj2[key])
        if(!flag){
            return false
        }
    }
    return true
}

function unique2(arr){            
    for(var i=0; i<arr.length; i++){
        for(var j=i+1; j<arr.length; j++){
            if(eq(arr[i],arr[j])){       
                arr.splice(j,1);
                j--;
            }
        }
    }
return arr;
}

const _arr = [
    1,2,2,1,
    {
        a:1,
        b:2,
        c:[11]
    },
    {
        a:1,
        b:2,
        c:[11]
    },
    {
        a:1,
        b:2,
        c:[112]
    }
]

const __arr = unique2(_arr)
console.log(__arr);