基于内置类的原型扩展方法实现数组去重

今儿听周啸天老师讲解了一种数组去重方法,觉得非常的不错。我们可以通过在Array的原型上创建一个方法,以后可以通过调用这个方法就可以实现数组的去重了,不学要每次都得重写写一次!!!

废话不多说直接撸代码:

Array.prototype.myArrayWeighting = function myArrayWeighting(){
    var obj = {};//定义一个空对象。
    for(var i=0; i<this.length; i++){
        var item=this[i];//定义item为当前项。
        if(typeof obj[item] !== 'undefined'){//判断当前对象中是否存在cur这一项。
            this[i] = this[this.length-1];//最后一项的值覆盖当前项。
            this.length--;//去掉最后一项
            i--;  //防止数组塌陷
            continue;//终止本次循环
        }
        obj[item]=item;//将当前项存储到对象中。
    }
    obj =null;//将obj赋值为null,释放堆内存。
    return this;  //返回去重后的数组。
};

var ary = [1,2,3,2,4,5,4,3,6];
ary.myArrayWeighting();  //直接让ary调用此方法即可。
console.log(ary);     //在控制台输出返回结果。[1,2,3,4,5,6]

看完代码的童鞋,可以自己尝试的在编辑器中敲一下,然后看看输出的数组是否是去重后的新数组。

上面的这种方法就通过在内置类的原型上扩展方法,我们就可以直接调用扩展的方法即可,实现了代码的封装,提高了代码开发效率。

你可能感兴趣的:(js)