1. 程式人生 > >ES6新增的資料結構Set和WeakSet

ES6新增的資料結構Set和WeakSet

一、Set

ES6提供了新的資料結構Set,Set物件不是真正的陣列,可以用Array.from()方法吧Set物件轉化為真正的陣列。 可以用來儲存複雜資料型別(Object)或者基本資料型別, 所有儲存的值都是唯一的。 (Set是一種可遍歷的集合物件,可以和陣列進行比較理解)

Set物件下面的方法:

add(value):新增某個value到Set物件裡面,返回Set結構本身。
delete(value):刪除某個值,返回一個布林值,true表示刪除成功。
has(value):返回一個布林值,表示引數value是否為Set的成員。
clear():清除Set中所有成員,沒有返回值。
keys():

返回一個鍵名的遍歷器
values():返回一個鍵值的遍歷器
entries() :返回一個鍵值對的遍歷器
forEach():使用回撥函式遍歷每個成員
.size:獲取Set結構的長度

1、Set本身是一個建構函式,用來生成Set資料結構
let set1 = new Set();
set1.add(1);
set1.add("winne");
set1.add(2);

console.log(set1); // {1, "winne", 2}
console.log(set1.size);  // 3
2、帶引數的初始化 ,可用於陣列去重
let arr = [1,2,3,1,
4,2,"1"]; let set2 = new Set(arr); console.log(set2); // {1, 2, 3, 4, "1"} let arr_unique = Array.from(set2); console.log(arr_unique); // [1, 2, 3, 4, "1"]

二、WeakSet

參考資料:https://www.cnblogs.com/diligenceday/p/5479076.html#_label4

WeakSet其實就是弱型別的Set。
WeakSet物件是一些物件值的集合, 並且其中的每個物件值都只能出現一次,WeakSet只能存物件型別的元素

,比如:Object, Array, Function 等等;有了弱引用的WeakSet, 就不用擔心記憶體洩漏了,如果別的物件不引用該物件, 這個物件會被垃圾回收機制自動回收;

WeakSet物件的方法只有三個,而且WeakSet物件沒有.size屬性;
  add(value)
  delete(value)
  has(value)

這三個方法的使用方式都和Set一樣。