You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

对比两个数组提取非交集元素:JavaScript与Lodash实现方案

嘿,这有几种实用的实现方案,不管用原生JavaScript还是Lodash都能轻松拿到你要的结果:

原生JavaScript实现
  • 方法1:filter() + includes() 直观写法
    这是最容易理解的方式,通过filter遍历arr2,用includes判断元素是否在arr1中,反向筛选出目标元素:

    let arr1 = [1,2,3];
    let arr2 = [1,2,3,4,5,6];
    
    const arr3 = arr2.filter(item => !arr1.includes(item));
    console.log(arr3); // 输出: [4,5,6]
    

    适合小数据量场景,代码简洁易读。

  • 方法2:Set优化性能版
    当数组元素较多时,includes的线性查找效率较低,把arr1转为Set后,查找时间复杂度降为O(1),性能更优:

    let arr1 = [1,2,3];
    let arr2 = [1,2,3,4,5,6];
    
    const arr1Set = new Set(arr1);
    const arr3 = arr2.filter(item => !arr1Set.has(item));
    console.log(arr3); // 输出: [4,5,6]
    
Lodash实现
  • 方法:使用_.difference方法
    Lodash内置的差集方法,直接传入两个数组就能得到结果,内部已经做了性能优化,用法超简洁:
    const _ = require('lodash'); // 先引入Lodash模块
    
    let arr1 = [1,2,3];
    let arr2 = [1,2,3,4,5,6];
    
    const arr3 = _.difference(arr2, arr1);
    console.log(arr3); // 输出: [4,5,6]
    
    如果需要对比复杂元素(比如对象),可以搭配_.differenceWith使用,灵活性拉满。

内容的提问来源于stack exchange,提问作者gautham shetty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:59:04