Js-数组交集

本文探讨了如何在JavaScript中找到两个一维数组的交集,强调了元素基础类型的限制。通过示例和代码解析,指出使用filter和includes方法可能出现冗余的问题,并提出解决方案,即遍历较短数组,确保每次匹配后不再检索已匹配项,从而避免重复。最后,解释了代码中i = -1的原因,旨在优化遍历效率。
摘要由CSDN通过智能技术生成

github:https://github.com/Vinson7lhl/MyStudyCode/blob/master/blog/array_intersection.js

首先要有一个讨论前提

(1)数组只能是一维数组

(2)里面的元素也应当是基础类型,如Boolean、Number、String

那么首先举一个例子:

let ar1 = [3,5,6,1,1,2,2,5],

    ar2 = [1,5,6,2,4,1,1]

 

如果用肉眼看很容易看到交集应该是[1,5,6,2,1],注意,这是以ar2逐一匹配ar1得到的结果;可以看出来:两个数组的交集就是两个集合重复的元素,结果是完全有可能发生重复的,比如上面的结果有两个1。而且因为数组是有先后顺序的,所以用哪个数组去匹配对方可能结果是不同的。

我特意现在网上找了几个方法,举例说明

方法1:通过filter过滤器,和includes函数

ar1.filter(item => ar2.includes(item))

假设:

let ar1 = [1,2,1,1,3,5],
    ar2 = [0,5,2,1,1];
let result = ar1.filter(item &#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值