Set集合與Map集合(七)
// Set集合與Map集合 // Set集合 // Set型別是一種無序列表,其中含有一些相互獨立的非重複值 // Set集合轉換為陣列 /*let set = new Set([1, 4, 2, 3, 3, 3, 4, 5]), array = [...set];
console.log(array)
// 注: 將物件儲存在Set的例項與儲存在變數中完全一樣,只要Set例項中的引用存在,垃圾回收機制就不能釋放該物件中的記憶體空間 let set = new Set(), key = {}; set.add(key); console.log(set.size); // 1 // 移除原始的引用 key = null; console.log(set.size); //1
// 重新取出原始引用 key = [...set][0]; */
// WeakSet (弱引用Set集合) // 只儲存物件的弱引用,並且不可以儲存原始值。集合中的弱引用如果是物件唯一的引用,則會被回收並釋放相應記憶體 /*let set = new WeakSet(); set.add(12); console.log(set.has(12)) // 報錯*/ // Set 與 WeakSet 的區別 // 1. 在WeakSet 的例項中,如果向add()、has()和delete()這三個方法傳入非物件引數都會導致程式報錯 // 2. WeakSet 集合不可迭代,所以不能被用於for-of 迴圈 // 3. WeakSet 集合不暴露任何迭代器(例如keys() 和 values()方法), 所以無法通過程式本身來檢測其中的內容 // 4. WeakSet 集合不支援forEach() 方法 // 5. WeakSet 集合不支援size()方法
map.set(key, "123"); map.set('name', 'wujiahui') console.log(map.size) map.forEach(function(value, key, ownerMap){ console.log(key + " " + value) }) key = null;
console.log(map.size)
map.forEach(function(value, key, ownerMap){ console.log(key + " " + value) })*/