實作方法:1、使用「new Set(陣列)」語句將兩個陣列都轉換為set集合類型;2、使用「new Set([...集合1].filter(x = > 集合2.has(x)))」語句取得兩個集合的交集即可,會傳回一個包含全部交集元素的新集合。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
在es6中,可以利用set物件的has() 方法來配合陣列的filter()來求兩個陣列的交集。
Set是ES6新提供的資料結構,類似數組,但是本身沒有重複值。利用這個特性,我們可以將陣列轉換為Set類型進行去重,然後使用Array.from方法將其再轉為陣列。
Set has() 方法指示 Set 物件是否包含指定的值。如果指定的值存在,則傳回真,否則傳回假。
let a=[1, 2, 3]; let b=[3, 5, 2]; newA = new Set(a); newB = new Set(b); let intersectionSet = new Set([...newA].filter(x => newB.has(x))); console.log(intersectionSet);
可以看出此時,交集元素被包含在一個set集合中傳回,可利用Array.from方法將集合轉為數組類型
Array.from方法用於將兩類物件轉換為真正的陣列:類似陣列的物件(array-like object)和可遍歷(iterable)的物件(包括ES6新增的資料結構Set 和Map)。
let intersectionSet = Array.from(new Set([...newA].filter(x => newB.has(x)))); console.log(intersectionSet);
延伸知識:求並集/差集
let a = new Set([1, 2, 3]); let b = new Set([3, 5, 2]); // 并集 let unionSet = new Set([...a, ...b]); //[1,2,3,5] // ab差集 let differenceABSet = new Set([...a].filter(x => !b.has(x)));
【相關推薦:javascript影片教學、web前端】
以上是es6怎麼求兩個陣列的交集的詳細內容。更多資訊請關注PHP中文網其他相關文章!