一、Set的基本用法
ES6提供的Set集合用於存儲不重複的數據
Set本身是一個構造函數,用來生成 Set 數據結構。
const s = new Set();
s.add(1);
s.add(1);
console.log([...s]);//[1]
在上面代碼中,創建了一個Set結構,然後通過add()方法向裏面添加了兩個相同的成員,最後輸出的只有一個成員。
結果表明 Set 結構不會添加重複的值。
let obj = {
a : 1,
b : 2
}
const s = new Set(obj);//報錯
當向Set集合中加入一個對象時,會拋出一個錯誤,提示類型錯誤(對象不具有iterable 接口)。
Set函數接受的參數必須具有 iterable 接口。
const s = new Set("abcdefg");
console.log([...s]);//["a", "b", "c", "d", "e", "f", "g"]
如果Set函數傳入的參數的是一個原始值,則會將轉換成字符串對象,再進行存儲
二、Set實例的屬性和方法
1.add()
添加某個值,返回 Set 結構本身。
const s = new Set();
s.add(1);
s.add(1);//無效添加
2.has()
返回一個布爾值,表示該值是否爲Set的成員。
const s = new Set([1,2,3,4,5]);
s.has(1);//true
s.has(6);//false
3.delete()
刪除某個值,返回一個布爾值,表示刪除是否成功。
const s = new Set([1,2,3,4,5]);
s.delete(1);//true
s.delete(6);//false
4.clear()
清除所有成員,沒有返回值。
const s = new Set([1,2,3,4,5]);
s.clear();
console.log([...s]);//[]
5.size
返回Set實例的成員總數。
const s = new Set([1,2,3,4,5]);
s.size;//5
6.forEach()
Set 結構的實例與數組一樣,也擁有forEach方法,用於對每個成員執行某種操作,沒有返回值。
const s = new Set([1,2,3,4,5]);
s.forEach((item,index,s)=>{
console.log(item,index,s)
})
從上面輸出結果中可以看出Set結構中的forEach()方法被重寫了,與數組的不同。
在Set集合中index不是下標,Set集合沒有下標。
forEach中第一個參數和第二個參數的值是相同的,都代表Set集合中的每一項數據。