1 const arrA = [1,2,3]; //数组A 2 const arrB = [2,3,4]; //数组B 3 let result = undefined; //结果 4 5 //ES6方式 6 let setA = new Set(arrA); 7 let setB = new Set(arrB); 8 9 //一、交集(A有,B也有) 10 result = arrA.filter(o=>setB.has(o)); 11 console.log('ES6交集:'+result); 12 13 //二、差集(A有,B没有) 14 result = arrA.filter(o=>!setB.has(o)); 15 console.log('ES6差集:'+result); 16 17 //三、并集(A有或B有) 18 result = Array.from(new Set([...arrA, ...arrB])); 19 console.log('ES6并集:'+result); 20 21 22 //lodash方式 23 //一、交集(A有,B也有) 24 result = _.intersection(arrA,arrB); 25 console.log('lodash交集:'+result); 26 27 //二、差集(A有,B没有) 28 result = _.difference(arrA,arrB); 29 console.log('lodash差集:'+result); 30 31 //三、并集(A有或B有) 32 result = _.union(arrA,arrB); 33 console.log('lodash并集:'+result);
执行结果:
> ES6交集:2,3
> ES6差集:1
> ES6并集:1,2,3,4
> lodash交集:2,3
> lodash差集:1
> lodash并集:1,2,3,4