Set,Map有什么區別?


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由於沒有格式限制,可以做數據存儲;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM