本篇提供了解決兩個(gè)數(shù)組交集黔牵、并集前硫、差集問(wèn)題的方案,閱讀阮一峰老師的ESMAScript 6入門(mén) 中的新數(shù)據(jù)結(jié)構(gòu)Set() 總結(jié)所得:
屬性與實(shí)例方法:
ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set荧止。它類(lèi)似于數(shù)組屹电,但是成員的值都是唯一的,沒(méi)有重復(fù)的值跃巡。
Set.prototype.constructor:構(gòu)造函數(shù)危号,默認(rèn)就是Set函數(shù)。
Set.prototype.size:返回Set實(shí)例的成員總數(shù)素邪。
Set 實(shí)例的方法分為兩大類(lèi):操作方法(用于操作數(shù)據(jù))和遍歷方法(用于遍歷成員)外莲。下面先介紹四個(gè)操作方法。
Set.prototype.add(value):添加某個(gè)值兔朦,返回 Set 結(jié)構(gòu)本身偷线。
Set.prototype.delete(value):刪除某個(gè)值,返回一個(gè)布爾值沽甥,表示刪除是否成功声邦。
Set.prototype.has(value):返回一個(gè)布爾值,表示該值是否為Set的成員摆舟。
Set.prototype.clear():清除所有成員亥曹,沒(méi)有返回值邓了。
代碼實(shí)現(xiàn):
//兩個(gè)數(shù)組
let a = new Set([2, 4, 5, 3])
let b = new Set([3, 5, 1, 6])
//求交集
let intersect = [...a].filter(item => b.has(item))
console.log(intersect) //[5, 3]
//求差集
let difference = [...a].filter(item => !b.has(item))
console.log(difference) //[2, 4]
//求并集
let union = [...new Set([...a, ...b])]
console.log(union) //[2, 4, 5, 3, 1, 6]