陣列物件去重方式
阿新 • • 發佈:2019-01-02
在陣列中都是數字的時候很好去重,例如:var arr=[1,2,2,2,3,4,5,4,5,3,6];可以用兩層for迴圈或者其他方式進行去重,在陣列中都是物件的時候就需要設定布林值來進行去重操作,原理也是兩層for迴圈,但是在第一層for迴圈內需要定義布林值為true,用來維持一個量,之後在內層for迴圈中進行比對,如果按照某個條件比對滿足的話,布林值就為false,之後在第一層for迴圈裡第二層for迴圈外進行布林判斷,如果為真,將資料插入到新陣列,如果不為真,則不用新增,從此達到了陣列去重的功能,以下是程式碼演示
var oldArr = [ {id:1,name:"zhangs",age:18,contact_id:1}, {id:1,name:"zhangs",age:18,contact_id:2}, {id:1,name:"zhangs",age:18,contact_id:3}, {id:1,name:"zhangs",age:18,contact_id:14}, {id:1,name:"zhangs",age:18,contact_id:3}, {id:1,name:"zhangs",age:18,contact_id:2}, {id:1,name:"zhangs",age:18,contact_id:1} ];//原資料陣列 var allArr = [];//新陣列
1.該方法為jquery方法
$.each(oldArr,function(i,v){ var flag = true; if(allArr.length > 0){ $.each(allArr,function(n,m){ if(allArr[n].contact_id == oldArr[i].contact_id){flag = false;}; }); }; if(flag){ allArr.push(oldArr[i]); }; });
2.原生js方法
for(var i=0;i<oldArr.length;i++){
var flag = true;
for(var j=0;j<allArr.length;j++){
if(oldArr[i].id == allArr[j].id){
flag = false;
};
};
if(flag){
allArr.push(oldArr[i]);
};
};