数组去重(面试题)

 

Object.prototype.equals = function (obj) {
    for (let propName in this) {
        if (obj.hasOwnProperty(propName)) {
            if (typeof this[propName] != typeof obj[propName]) {
                return false;
            }
            if (this[propName] instanceof Object) {
                return this[propName].equals(obj[propName])
            } else if(this[propName] instanceof Array){
                return this[propName].equals(obj[propName])
            }else{
                return this[propName] == obj[propName];
            }
        } else {
            return false;
        }
    }
};
Array.prototype.equals = function (arr) {
    // console.log("数组比对")
    if (!(arr instanceof Array)) {
        return false;
    }
    if (this.length != arr.length) {
        return false;
    }
    for (let index =0;index<this.length;index++){
        let element = this[index];
        // console.log("foreach ",element,arr[index])
        if(element instanceof Array){
            return element.equals(arr[index])
        }
        // console.log("foreach typeof",element,arr[index])
        if(typeof element != typeof arr[index]){
            // console.log("返回 类型不同")
            return false;
        }
        // console.log("foreach instanceof",element,arr[index])
        if(element instanceof Object){
            return  element.equals(arr[index])
        }
        // console.log("foreach ==",element,arr[index])
        if(element != arr[index]){
            return false;
        }
    }
};
function quchong(arr){
    let output = [];
    for(let i =0;i<arr.length;i++){
        let has = false;
        for(let j=0;j<output.length;j++){
            if(arr[i] instanceof Array && output[j] instanceof Array){
                if(output[j].equals(arr[i])){
                    has = true;
                    break;
                }
            }
            if(arr[i] instanceof Object && output[j] instanceof Object){
                if(output[j].equals(arr[i])){
                    has = true;
                    break;
                }
            }
            if(arr[i] === output[j]){
                has = true;
                break;
            }
        }
        if(!has){
            output.push(arr[i]);
        }
    }
    return output;
}
var qss = [123, {a: 1}, {a: {b: 1,a:2}}, {a: "1"}, {a: {a:2,b: 1}}, "meili"];
console.log('1 ------ ',qss);
console.log('2 ------ ',quchong(qss))

var qssd = [123, [1, 2, 3], [1, "2", 3], [1, 2, 3], "meili"];

console.log('1 ------ ',qssd);
console.log('2 ------ ',quchong(qssd))

var qssr = [123, "meili", "123", "mogu", 123]

console.log('1 ------ ',qssr);
console.log('2 ------ ',quchong(qssr))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值