// 获得去重之后的数组
Array.prototype.noRepeat = function () {
return [...new Set(this)];
}
// 被删除的重复条目的新数组
Array.prototype.getRepeat = function () {
let noRepeat = new Set(this.noRepeat());
return this.filter((x) => {
!noRepeat.has(x)
})
} let arr1 = [1,2,3,4,5,4,3,2]; let arr2 = ['a','b','c','d','e','d','c']; let arr1_0 = arr1.noRepeat() let arr1_1 = arr1.getRepeat() let arr2_0 = arr2.noRepeat() let arr2_1 = arr2.getRepeat()
Array.prototype.repeat=function(){ let arr=this,arr1=[],obj={}; for(let i=0;i<arr.length;++i){ if(!obj[arr[i]]){ obj[arr[i]]=true; }else{ arr1.push(arr[i]); } } return arr1; };
Array.prototype.deleteSame=function(){
var arr=this;
var a=[];
for (var i=0;i<this.length;i++){
var index=a.indexOf(arr[i]);
//console.log(index);
if(index==-1){
a.push(arr[i]);
arr.splice(i,1);//删除后会自动往前移动所以i-1
i--;
}
else{
continue;
}
}
return a;
}
var test=[1,2,3,3,4,5,9,3,4,6];
console.log(test.deleteSame()); Array.prototype.deleteSame = function(){
let mySet = new Set(), //用集合天然去重
a = [];
this.forEach( function(item) {
if (!mySet.has(item)) { //没有则加入集合
mySet.add(item);
} else {
a.push(item) //有则加入数组
}
});
return a;
};
console.log([1,NaN2,1,2, NaN, NaN].deleteSame()) //[1, 2, NaN] 可以去NaN 不能去对象
//哇 缩进搞了我好久 Array.prototype.respeat = function(){
var a = [];
var arr = this;
arr.forEach(function(v,i) {
if(i !== arr.lastIndexOf(v) && i==arr.indexOf(v)) {
a.push(v);
}
})
return a;
} }