js数组对象交集

需求分析:如图所示有两个对象数组arr1和arr2,求arr1和arr2的交集.

 var arr1 = [{  id: 1 }, { id: 2 }, { id: 3 }];
 var arr2 = [{id: 1 }, {id: 2 }, {id: 3 }, { id: 4 }, { id: 5 },{id: 6}];

实现思路及代码如下:

var have = []               //定义一个空数组
            arr2.forEach(el=>{
              have.push(el.id)         //将数组一与数组二用于对比的字段放到一个数组中               
                                       // have=[1,2,3,4,5,6]
       })
                              
   
然后就是用另一个数组使用filter来过滤满足条件的数据,返回一个新的数组,
使用indexOf来判断是否存在这个数据,没有的话返回-1有的话就返回位置,这里!=-1,表示检索有这个数据的
两者结合就是检索arr1中的id与arr2中相同的数据出来返回一个新的数组.间接实现数组对象的交集
 
 var result = arr1.filter(function (e) {
                  return have.indexOf(e.id) != -1
                })
     console.log(result)

注:因为数组对象长度不了,没法直接通过遍历的方式求并集,所以借用了数组求交集的方法间接实现这个功能需求.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值