1. 程式人生 > >陣列物件去重方式

陣列物件去重方式

在陣列中都是數字的時候很好去重,例如: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]);
      };
    };