//对象去重复 Array.prototype.uniqueObjRepeat = function(){ //this.sort();//是否排序 //定义结果数组 var arr=[]; arr.push(this[0]); for(var i = 1; i < this.length; i++){ //从数组第二项开始循环遍历数组
//判断相邻两个元素是否相等,如果相等说明数据重复,否则将元素写入结果数组 if(JSON.stringify(this[i]) != JSON.stringify(arr[arr.length - 1])){ arr.push(this[i]); } //console.error(arr); } return arr; };
//去掉对象中某个不同状态对象(此处场合,server返回一堆集群,存在相同IP集群,但是服务器状态不同,此处做法为保留在线IP对象)
Array.prototype.removeObjSameName=function () { var arr=[],cantPush=true; arr.push(this[0]); console.warn(this); console.warn(arr); for(var i = 1; i < this.length; i++){ //从数组第二项开始循环遍历数组 //判断相邻两个元素是否相等,如果相等说明数据重复,否则将元素写入结果数组 for(var k=0;k<arr.length;k++){ if(this[i]['name'] == arr[k]['name']){ if(this[i].status==1||arr[k].status==1){ arr[k]['status']='1'; this[i]['status']='1'; } cantPush=false; } } if(cantPush==true){ arr.push(this[i]); } cantPush=true;//重置条件 console.error(arr); } return arr; };
例如
var arrObj1=[{name:'clientA',ip:'192.168.0.4',descrip:'boy',status:1},{name:'clientB',ip:'192.168.0.4',descrip:'boy',status:0},{name:'clientC',ip:'192.168.0.5',descrip:'boy',status:1},{name:'clientD',ip:'192.168.0.6',descrip:'boy',status:1},{name:'clientA',ip:'192.168.0.4',descrip:'boy',status:1}];
使用:
arrObj1=arrObj1.uniqueObjRepeat().removeObjSameName();