Map:Map
對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。構造函數Map
可以接受一個數組作為參數。
- map對應的數據類型是對象{},它擁有和對象一樣的方法;
- map的鍵和值可以是任何對象,這一點對象的鍵只能是number或者string;
- 自帶iterator遍歷器,可以進行for...of遍歷;
- 初始化一個Map: var map = new Map([[1],[2]]);
- 對應的方法:
- size:返回Map對象中所包含的鍵值對個數
- set(key, val): 向Map中添加新元素
- get(key): 通過鍵值查找特定的數值並返回
- has(key): 判斷Map對象中是否有Key所對應的值,有返回true,否則返回false
- delete(key): 通過鍵值從Map中移除對應的數據
- clear(): 將這個Map中的所有元素刪除
keys()
:返回鍵名的遍歷器values()
:返回鍵值的遍歷器entries()
:返回鍵值對的遍歷器forEach()
:使用回調函數遍歷每個成員
Set:Set
對象允許你存儲任何類型的值,無論是原始值或者是對象引用。它類似於數組,但是成員的值都是唯一的,沒有重復的值。
- set對應的數據類型是數據,有一些方法可以公用;
- 由於map是值的集合,所有set的鍵和值是相等的;
- set所有的值是唯一的,可以進行數組去重;
- 自帶iterator遍歷器,可以進行for...of遍歷;
- 初始化一個Set:var set = new Set(['1',undefined,{},2,[3,4]]);
- 對象的方法:
- size:返回Map對象中所包含的鍵值對個數
add(value)
:添加某個值,返回 Set 結構本身(可以鏈式調用)。delete(value)
:刪除某個值,刪除成功返回true
,否則返回false
。has(value)
:返回一個布爾值,表示該值是否為Set的成員。clear()
:清除所有成員,沒有返回值。keys()
:返回鍵名的遍歷器。values()
:返回鍵值的遍歷器。entries()
:返回鍵值對的遍歷器。forEach()
:使用回調函數遍歷每個成員。
所以綜上所述,主要有一下幾個區別:
1.Map是鍵值對,Set是值得集合,當然鍵和值可以是任何的值;
2.Map可以通過get方法獲取值,而set不能因為它只有值;
3.都能通過迭代器進行for...of遍歷;
4.Set的值是唯一的可以做數組去重,Map由於沒有格式限制,可以做數據存儲;