欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前端提高篇(二十八)练习8数组去重

程序员文章站 2022-03-09 15:20:55
...

要求:
1.给Array本地对象增加一个原型方法
2.它用于删除数组条目中重复的条目(可能有多个)
3.返回值是被删除的重复的元素组成的新数组
效果是:

var x = ['a','b','c','d','b','a','e'];
var y = x.distinct();
//y:['b','a']

注意点1:在js中,不能单独用in来判断某一个元素是否在数组中
前端提高篇(二十八)练习8数组去重
注意点2:在原型上增加方法,此处是在Array的原型增加方法,用的是:Array.prototype.函数名=function(){}

注意点3:因为是在原型上增加一个方法,即使用时是x.distinct();这样的,在原型的distinct方法里的this,指的就是调用这个方法的对象本身x

Array.prototype.distinct = function(){
    console.log('this',this)
}

运行效果:this与x的值一致
前端提高篇(二十八)练习8数组去重

Array.prototype.distinct = function(){
    var res = [];
    for(var i =0; i < this.length; i++){

        for(var j = i+1; j < this.length;){
            if (this[i] === this[j]){
                res.push(this.splice(j,1)[0]);
            }else{
                j++;
            }
        }
    }
    return res;
}

运行效果:x中没有重复的值,原本重复的值都存到了y中
前端提高篇(二十八)练习8数组去重