es6实现数组并集、交集、差集
es6实现数组并集、交集、差集
- 1.数组并集
- 2.数组交集
- 3.数组差集
先简单介绍一下并集、交集、差集是什么。
并集:
以属于A或属于B的元素为元素的集合成为A与B的并(集) 记作A∪B(或B∪A),读作“A并B”(或“B并A”),即A∪B={x|x∈A,或x∈B}
交集:
以属于A且属于B的元素为元素的集合成为A与B的交(集) 记作A∩B(或B∩A),读作“A交B”(或“B交A”),即A∩B={x|x∈A,且x∈B}
差集:
以属于A而不属于B的元素为元素的集合成为A与B的差(集)记作A-B(或B∩A),读作“A减B”,即A-B={x∣x∈A,且x∉B}
1.数组并集
-
方法1
-
具体思路是,先使用…方法将两个数组合并起来,然后在使用Set去重。具体思路是,先使用concat方法将两个数组合并起来,然后在使用set·去重,最后用Array.from()将其准换成真数组。
var a = [1,2,3,4,5]var b = [2,4,6,8,10] //console.log((a.concat(b)));//合并两个数组var bing = new Set(a.concat(b))//去重console.log(Array.from(bing));//转为数组
- 方法2
- 具体思路是,先使用…方法将两个数组合并起来,然后在使用Set去重。
let a1=new Set([1,2,3,4,5]);
let b1=new Set([1,2,3,4,5,6,7,8,9]);// console.log([...a1,...b1]);//拼接两个数组let arr = Array.from(new Set([...a1, ...b1]));//console.log(arr);
-
方法3
-
具体思路是,先用includes方法找到a与b中不同的值,然后,使用concat,将其与a合并成新数组。
var a = [1, 2, 3]
var b = [2, 4, 5]
let c = a.concat(b.filter(x => !a.includes(x))) // [1,2,3,4,5]
console.log(c);
2.数组交集
- 方法1
- 具体思路是filter过滤出a与b不同的元素。用indexOf方法,当b中没有a中的相同的元素就返回-1。
var a= [1, 2, 3]
var b = [2, 4, 5]
var c = a.filter(function(x){ return b.indexOf(x) > -1 }) // [2]
console.log(c);
- 方法2
- 具体思路是filter过滤出a与b不同的元素。用includes方法,在b中找到与a中的相同的元素。
var a= [1, 2, 3]
var b = [2, 4, 5]
let c = a.filter(x => b.includes(x)) // [2]
console.log(c);
3.数组差集
- 方法1
- 思路是用indexOf找到a中与b不同的元素,与b中找到a不同的元素,最后在合并成一个数组。
var a = [1,2,3];
var b = [2,3,4];
var difference = a.filter(function(v){return b.indexOf(v) === -1}).concat(b.filter(function(v){return a.indexOf(v) === -1 })) // [1,3,4,5]console.log(difference);
- 方法2
- 思路是将a,b两个数组合并起来,然后,去除a与b的交集,最后转为真数组。
var a = [1,2,3];
var b = [2,3,4];
let difference = Array.from(new Set(a.concat(b).filter(v => ! new Set(a).has(v) || ! new Set(b).has(v)))) // [1,3,4,5]
console.log(difference);
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
