数组中多条对象去重方式

在数组中都是数字的时候很好去重

例如: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]);
  };
};

3.使用forEach

  oldArr.forEach(oldItem => {
    let flag = true
    allArr.forEach(subItem => {
      if (oldItem.ct === subItem.ct) {
        flag = false
      }
    })
    if (flag) {
      allArr.push(oldItem)
    }
  })
posted @ 2020-04-15 22:55  爱代码三千  阅读(265)  评论(0编辑  收藏  举报