1、數組去重
// ES6
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined,null,null, NaN,NaN,'NaN', 0, 0, 'a', 'a',{},{}];
function arr_unique(arr){
return [...new Set(arr)];
//或者
//return Array.from(new Set(arr));
}
arr_unique(arr);
//(13)[1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {…}, {…}]
// forEach 和 filter 方法也可實現去重,但是會遺漏 NaN
// 去重最終版
// hash+hasOwnProperty+JSON.stringify
function arr_unique1(arr){
var hash = {};
return arr.filter( (val)=>{
return hash.hasOwnProperty( typeof val + JSON.stringify(val) ) ?
false : hash[typeof val + JSON.stringify(val)] = true ;
});
}
arr_unique1(arr);
//(12) [1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {…}]
2、刪除數組中的指定下標元素
Array.prototype.del=function(index){
if(isNaN(index)||index>=this.length){
return false;
}
for(var i=0,n=0;i
if(this[i]!=this[index]){
this[n++]=this[i];
}
}
this.length-=1;
};
3、刪除數組中某些指定元素
Array.prototype.delArraySome = function(assignValue){
this.filter(function(v, i)=>{
v===assignValue ? this[i] = '0-0' : null
return v===assignValue
})
var a = []
this.map((v,i)=>{
this[i] === '0-0' ? a.push(v) : null
})
return a
}