1. 程式人生 > 實用技巧 >Set和Map是什麼,有什麼區別

Set和Map是什麼,有什麼區別

  • Map

    • Map是一組鍵值對的結構,具有極快的查詢速度

    • 初始化Map需要一個二維陣列,或者直接初始化一個空Map,Map具有以下方法

      var m = new Map();  // 空Map
      m.set('Adam', 67);  // 新增新的Key-value
      m.has('Adam');      // 是否存在key 'Adam' : true
      m.get('Adam');      // 67
      m.delete('Adam');   // 刪除key 'Adam'
      m.get('Adam');      // undefined
      
    • 一個key只能對應一個value,所以多次對一個key放入value,後面的值會把前面的值沖掉

  • Set

    • Set和Map類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在Set中,沒有重複的key

    • 要建立一個Set,需要提供一個Array作為輸入,或者直接建立一個空Set

      var s1 = new Set();  // 空Set
      var s2 = new Set([1, 2, 3]);  // 1, 2, 3
      
    • 重複元素在Set中會自動被過濾

      var s = new Set([1, 2, 3, 3, '3']);
      s; // Set {1, 2, 3, '3'}  3和'3' 是不同的元素
      
    • 通過add(key) 可以新增元素到Set中,可以重複新增,但不會有效果

    • 通過delete(key) 可以刪除元素

Map和Set是ES6標準新增的資料型別,請根據瀏覽器的支援情況決定是否要是用