1.原型重构:数组内置类的原型上的方法是可以修改的,但是不可以重构
实现数组去重
第一种:去重并排序
/*
Array.prototype.unique = function(){
//this就相当于ary
var obj = {};
this.forEach(item => {
obj[item] = item;//把数组的每一项付给定义的obj的对应下表的每一项
})
this.length = 0;//把数组清空
for (var k in obj ){//循环对象的每一项
this.push(obj[k]);//把数组的值当做key存进obj
}
ary.unique();
}
*/
第二种:
Array.prototype.unique = function(){
let arr = [...new Set(this)]//去重:这个方法是数组去重最新的
this.length = 0;//清空数组
arr.forEach(item =>this.push(item))//循环数组 ,再把每一项放进数组
ary.unique();
}
第三种:
Array.prototype.unique = function(){
var obj = {};//开一个堆内存
for (var i=0;i<this.length; i++){
if(obj.hasOwnProperty(this[i])){//如果有这一项了
this.splice(i,1);//删除这一项
i--;//数组长度减一
}else{
obj[this[i]] = this[i];//否则当对象的每一项个数组的项相等了 就赋值
}
}
ary.unique();
}