1. 程式人生 > 實用技巧 >ES6 中的 set 用法

ES6 中的 set 用法

//定義從var變為let 不可重複定義
let a=[1,2,3,4,5];
 
// Set 它類似於陣列,但是成員的值都是唯一的,沒有重複的值。
 
    let set=new Set();
 
Set 例項的方法分為兩大類:操作方法(用於操作資料)和遍歷方法(用於遍歷成員)。下面先介紹四個操作方法。
add(value):新增某個值,返回 Set 結構本身。
delete(value):刪除某個值,返回一個布林值,表示刪除是否成功。
has(value):返回一個布林值,表示該值是否為Set的成員。
clear():清除所有成員,沒有返回值。
Array.from方法可以將 Set 結構轉為陣列。
 
Set 結構的例項有四個遍歷方法,可以用於遍歷成員。
keys():返回鍵名的遍歷器
values():返回鍵值的遍歷器
entries():返回鍵值對的遍歷器
forEach():使用回撥函式遍歷每個成員
需要特別指出的是,Set的遍歷順序就是插入順序。
由於 Set 結構沒有鍵名,只有鍵值(或者說鍵名和鍵值是同一個值),所以keys方法和values方法的行為完全一致。
Set 結構的例項預設可遍歷,它的預設遍歷器生成函式就是它的values方法。
這意味著,可以省略values方法,直接用for...of迴圈遍歷 Set。
擴充套件運算子(...)內部使用for...of迴圈,所以也可以用於 Set 結構。
 
舉例
//1 陣列去重 let a=[1,2,3,4,5,6,7,1,2,3]; let b=new Set([...a]); b=[...b]; // 2 求交集 並集 差集 let a=new Set[1,2,3]; let b=new Set[3,4,5]; //交集 let c=new Set([...a,...b]); //並集 let d=new Set([...a].filter(x=>b.has[x])); //交集 let d=new Set([...a].filter(x=>!b.has[x]));