1》Set
Set是一種有序的清單,其中包含的是一些互相獨立的非重複的值。
Set具有的方法:
1.添加 add()方法
let set = new Set();
set.add(1);
console.log(set.size); //1
a.這裡需要注意的就是set集合中,不會盡行強制類型的轉換,所有5和"5"可以作為兩個獨立的元素存在。
b.如果你給set集合裡面添加幾個重複的值的話,這裡隻會儲存重複值中的一個。
2.删除 delete()方法
delete的方法和add方法的使用方法是一樣的
let set = new Set();
set.add(1);
console.log(set.size); //1
set.delete(1);
console.log(set.size); //0
3。清除裡面的所有的元素: clear()
用法同上,隻不過這裡不用傳入參數了
4. 判斷集合裡面是否包含哪個元素 has()
let set = new Set();
set.add(1);
console.log(set.has(1)); //true
5.如果你想對集合裡面的每一個元素進行操作那麼forEach()方法就會起到很大的作用了
forEach()接受3個參數:
1.Set集合下一次索引的位置
2 和第一個參數保持一緻
3被周遊的Set集合本身
let set = new Set([1,2]);
set.forEach(function(value,key,ownerSet){
console.log(key+" "+value);
console.log(ownerSet==set);
});
天呀!如果我不想對set集合裡面的左右的元素進行操作,我隻想對其中的一個進行操作,那該怎麼呢?
我們可以把set與數組的互相轉化
let set = new Set([1,2,3,4,5,6,7]);
let value = [...set];
console.log(value);
你也看到了,其中将數組當作參數傳進去就可以轉化為set了,利用擴充操作符就可以将set轉化為數組。
》2 WeakSet
支援的方法add(),delete(),has()這3個方法。
現在就來說說其中的弱展現在哪裡?
let set1 = new WeakSet();
set1.add(1); //報錯
這裡展現的就是其中的第一弱:在Weak Set裡面傳進去的參數必須是非null類型的對象。
let set = new Set();
key = {};
set.add(key);
console.log(set.size); //1
key = null;
console.log(set.size); //1
// 現在是 WeakSet
let set1 = new WeakSet();
key1 = {};
set1.add(key1);
console.log(set1.has(key1)); //true
key1 = null;
console.log(set1.has(key1)); //false
這裡展現的就是其中的的弱引用了。對于Set來說将鍵設定為null之後,垃圾資源回收筒并沒有回收,我們還是能通路到,但是對于WeakSet來說垃圾回收機制就回收了。這裡展現的就是它的第二弱了。
再有就是其中WeakSet的方法比較少。
最後在這裡留一個小問題:試着利用set的特性,寫一個方法實作去掉數組裡面的重複的元素。如果寫不出來的話,看看我的下一篇部落格吧!Map 和 WeakMap