hash 筛选,去重

因为工作需要,遇到两个对象数组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
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值