对比两个数组提取非交集元素: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
相关产品推荐
相关产品推荐

