为 Array 对象添加一个去除重复项的方法
示例
输入[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN]
输出 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']
解决方法:1.用includes方法
Array.prototype.Deduplicate = function () {
var newArr=[];
this.forEach(function(val,i){
if(!newArr.includes(val)){
newArr.push(val);
}
})
return newArr;
}
如果也要对数组中的元素是对象的也要去除,如{}
解决方法如下:
Array.prototype.Deduplicate = function () {
var newArr=[];
var newArr1=[];
isFlag = false;
this.forEach(function(val,i){
if(!JSON.stringify(val) && !isFlag){
isFlag=true;
newArr.push(val);
}else{
if(newArr.indexOf(JSON.stringify(val))===-1){
newArr.push(JSON.stringify(val));
}
}
})
var newArr1=newArr.map(function(val){
return val?JSON.parse(val):val;
})
return newArr1;
}