數組去重:以下方法創建一個新的數組存放結果,創建一個空對象來判斷數組元素是否重復,每次for循環時,取出數組中一個元素與對象進行對比,如果這個元素不重復,則放到res中。
Array.prototype.arrayUnique = function(){
var res = [],obj = {};
for(var i=0,len=this.length;i<len;i++){
if(!obj[this[i]]){
res.push(this[i]);
obj[this[i]] = 1;
}
}
}
var arr = [111,231,111,231,444];
arr.arrayUnique();
數組對象去重:$.unique()此方法只能遍歷基本的數據類型,遍歷對象實現不了。所以需要用JSON.stringify()方法將對象轉為字符串,然后調用此方法去重,最后再講字符串轉為對象。
function uniqueObjArray(arr){
var arrResult = [];
for(var i=0,len=arr.length;i<len;i++){
arr[i]=JSON.stringify(arr[i]);//將對象轉化為字符串
arrResult.push(arr[i]);//字符串組成的數組
}
arr=[];//清空原來的數據
arrResult = $.unique(arrResult);//去掉重復的字符串
for(var j=0,len=arrResult.length;j<len;j++){
arrResult[i]=JSON.parse(arrResult[i]);//將字符串轉化為對象
arr.push(arrResult[i]);
}
return arr;
}