数组去重:以下方法创建一个新的数组存放结果,创建一个空对象来判断数组元素是否重复,每次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;
}