hash 筛选,去重

来源:互联网 发布:新世界 电影 知乎 编辑:程序博客网 时间:2024/05/22 00:52

因为工作需要,遇到两个对象数组A,B,找到A中B不存在的对象,并保存在一个数组中,之前一直采用正常的for循环的方式,每次找到一个便删掉的方式,比较麻烦,而且不是太好。先采用hash数组的方法来解决。

 var roles=[{"des":"t04_Cm","name":"测试4","pId":null,"id":52}];    var allNodes=[{"noR":true,"iconOpen":"common/css/img/open.png","name":"类列表","pId":0,"id":0,"iconClose":"common/css/img/close.png","open":true},{"iconOpen":"common/css/img/open.png","des":"test01_Cm","name":"测试1","tableid":47,"pId":0,"id":47,"iconClose":"common/css/img/close.png","open":true},{"iconOpen":"common/css/img/open.png","des":"test02_Cm","name":"测试2","tableid":48,"pId":0,"id":48,"iconClose":"common/css/img/close.png","open":true},{"iconOpen":"common/css/img/open.png","des":"test03_Cm","name":"测试3","tableid":49,"pId":0,"id":49,"iconClose":"common/css/img/close.png","open":true},{"iconOpen":"common/css/img/open.png","des":"t04_Cm","name":"测试4","tableid":52,"pId":0,"id":52,"iconClose":"common/css/img/close.png","open":true}];    var rest=[],hash=[];
var roles=[{"des":"t04_Cm","name":"测试4","pId":null,"id":52}];    var allNodes=[{"noR":true,"iconOpen":"common/css/img/open.png","name":"类列表","pId":0,"id":0,"iconClose":"common/css/img/close.png","open":true},{"iconOpen":"common/css/img/open.png","des":"test01_Cm","name":"测试1","tableid":47,"pId":0,"id":47,"iconClose":"common/css/img/close.png","open":true},{"iconOpen":"common/css/img/open.png","des":"test02_Cm","name":"测试2","tableid":48,"pId":0,"id":48,"iconClose":"common/css/img/close.png","open":true},{"iconOpen":"common/css/img/open.png","des":"test03_Cm","name":"测试3","tableid":49,"pId":0,"id":49,"iconClose":"common/css/img/close.png","open":true},{"iconOpen":"common/css/img/open.png","des":"t04_Cm","name":"测试4","tableid":52,"pId":0,"id":52,"iconClose":"common/css/img/close.png","open":true}];    var rest=[],hash=[];    $.each(roles,function(key,val){        hash[val.id]=true;    })    $.each(allNodes,function(index,value){        if(hash[value.id]===undefined){            rest.push(value);        }    });    console.log(rest)


再介绍一种hash数组去重的方法,可以将数组中的相同项删掉。

function unique2(arr){  //i遍历arr,同时创建两个空数组result和hash  for(var i=0,result=[],hash=[];      i<arr.length;      i++){    //如果hash中以当前元素为key的元素是undefined    if(hash[arr[i]]===undefined){      //将当前元素追加到result结尾      result[result.length]=arr[i];      //在hash中添加一个新元素: key为当前元素值,值为true      hash[arr[i]]=true;    }  }//(遍历结束)  return result;//返回result}


原创粉丝点击