js寻找两个数组的差集_js求两个数组的交集|并集|差集|去重
let a = [1,2,3], b= [2, 4, 5];
1.差集
(a-b 差集:屬于a但不屬于b的集合)? a-b = [1,3]
(b-a 差集:屬于b但不屬于a的集合)? b-a = [4,5]
1) 第一種解決方案: filter+includes
let difference = a.concat(b).filter(v => !a.includes(v))
console.log(difference)//[4,5]
2) 第二種解決方案:Set+Array.from
ES6提供了新的數(shù)據(jù)結(jié)構(gòu)Set。它類似于數(shù)組,但是成員的值都是唯一的,沒(méi)有重復(fù)的值。
Set本身是一個(gè)構(gòu)造函數(shù),用來(lái)生成Set數(shù)據(jù)結(jié)構(gòu)。
Set類似于數(shù)組,區(qū)別在于它所有的成員都是唯一的,不會(huì)有重復(fù)的值。
Set是一個(gè)新的數(shù)據(jù)結(jié)構(gòu)。
Array.from() 方法可以將 Set結(jié)構(gòu)轉(zhuǎn)為數(shù)組。
由于key不能重復(fù),所以,在Set種,沒(méi)有重復(fù)的key。要?jiǎng)?chuàng)建一個(gè)Set,需要提供一個(gè)Array作為輸入,或者直接創(chuàng)建一個(gè)空Set。
var s1 = new Set(); //空Set
var s2 = new Set([1,2,3]); //含1,2,3
重復(fù)元素在Set種自動(dòng)被過(guò)濾:
var s = new Set([1,2,3,3,'3']);
s;//Set {1,2,3,"3"}
向Set加入值的時(shí)候,不會(huì)發(fā)生類型轉(zhuǎn)換,所以3和'3'是不同的值。
注意數(shù)字3和字符串'3'是不同的元素。
new Set的作用是可以將傳入的Array去重。
Array.from() 的作用是可以將 Set結(jié)構(gòu)轉(zhuǎn)為數(shù)組。
let aSet = newSet(a)
let bSet= newSet(b)
let difference= Array.from(new Set(a.concat(b).filter( v => !aSet.has(v) )))
console.log(difference)//[4,5]
3) 第三種解決方案:filter+indexOf
2.交集
1) 第一種解決方案:filter+includes
總結(jié)
以上是生活随笔為你收集整理的js寻找两个数组的差集_js求两个数组的交集|并集|差集|去重的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle常见单词_Oracle的词汇
- 下一篇: arduino定时器控制舵机_Ardui