1. 程式人生 > 實用技巧 >ES6 -- new Set()之去重,交集,並集等

ES6 -- new Set()之去重,交集,並集等

首先,要記住的是:資料結構Set內成員的值都是唯一的,沒有重複的值

Set物件常用的用法

1.陣列去重

var arr = [1,2,3,2,1,4];
[...new Set(arr)]   //結果為 [1, 2, 3, 4]
或者
Array.from(new Set(arr)); //結果為 [1, 2, 3, 4]

小貼士:ES6內的方法Array.from()方法就是將一個類陣列物件或者可遍歷物件轉換成一個真正的陣列。所謂類陣列物件,最基本的要求就是具有length屬性的物件。

2.字串重複字元去重

let a = 'abcdefabcdef';
[...new Set(a)].join(''
); //"abcdef"
let a = '東方大道東方大道';
[...new Set(a)].join('');   //"東方大道"

3. 兩陣列取並集

let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
// 並集
let union = new Set([...a, ...b]);  // Set {1, 2, 3, 4}

4. 兩陣列取交集

let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
 // 交集
let intersect = new Set([...a].filter(x => b.has(x)));  //
set {2, 3}

5.(a 相對於 b 的)差集

let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
 // (a 相對於 b 的)差集
let difference = new Set([...a].filter(x => !b.has(x)));  // Set {1}