js 二维数组去重(续)

之前写过二维数组去重,今天再翻出来看了看,简直不忍直视,如此垃圾,所以今天重新写一下咯。

二维数组去重,重复问题一定要和哈希联系起来,js和java不一样,没有map(es6有),但是js有object,键是不会重复的,不多说,代码如下:

var matrix=[
        [1,2,3,4],
        [3,4,5,6],
        [1,2,3,4]
    ]
    var removeRepeat=function(arr){
        var obj={};
        for(var i=0;i<arr.length;i++){
            // 判断当前项是否遍历过,是则删除,否存入obj以作对照
            if(obj.hasOwnProperty(arr[i])){ 
                arr.splice(i,1)
                i++;
            }
            obj[arr[i]]=i;
        }
        return arr;
    }
    removeRepeat(matrix);

继续优化,将该方法存入数组原型链,代码如下:

    var matrix=[
        [1,2,3,4],
        [3,4,5,6],
        [1,2,3,4]
    ]
    Array.prototype.removeRepeat=function(){
        var obj={};
        for(var i=0;i<this.length;i++){
            // 判断当前项是否遍历过,是则删除,否存入obj以作对照
            if(obj.hasOwnProperty(this[i])){ 
                this.splice(i,1)
                i++;
            }
            obj[this[i]]=i;
        }
        return this;
    }
    console.log(matrix.removeRepeat());

猜你喜欢

转载自www.cnblogs.com/xingguozhiming/p/9775711.html
今日推荐