- 定義 這是一種無重複值的有序列表(若是添加了重複項至關於添加無效,對象除外,由於他們不會被轉爲字符串類型相同的對象在其中就是兩個object,也沒有類型轉換)。Set容許對它包含的數據進行快速訪問,從而增長了一個追蹤離散值的更有效方式。
- 基本操做與方法
let set = new Set();
set.add(5);
set.add("5");
console.log(set.size);
console.log(set.has(5))
set.delete(5);
set.clear();
let set1 = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
複製代碼
- forEach() 循環遍歷set中元素
let set = new Set([1, 2, 3]);
set.forEach(function(vaule, key, ownSet){
console.log(vaule);
});
複製代碼
forEach中回調函數要使用this值時在整個的第二個參數加上this,或者使用箭頭函數。set.forEach((value) => this.output(value));
複製代碼
- set對象轉換爲數組(剩餘運算符實現)
let set = new Set([1, 2, 3]);
let arr = [...set];
複製代碼
那麼以這種方式咱們多了一種數組去重的辦法:function deWeight(arr) {
return [...(new Set(arr))];
}
let arr = [1, 1, 1, 1, 1, 2];
console.log(deWeight(arr));
複製代碼
- weakSet 是set對象的一個弱引用,set方法存入的對象當對象指定在外部指定去除時set對象內部任然會有,weakSet更加像是一個指向性的對象外部去除內部也不會存在 幾點區別:
- weakSet各類方法只能傳入對象
- 沒有forEach方法