Map 資料結構

yangkangkang發表於2024-09-26

Map是一種鍵值隊的集合,和物件Object類似。兩者的區別:

一、Map和Object 的區別

  • 鍵的型別:在Map中,鍵可以是任何型別(包括物件、函式、undefined、NaN等等);而在Object中,鍵只能是字串或者符號。
  • 有序性:在Map中,鍵值對是按照插入(新增)的順序排列的;而Object不能保證順序

二、建立:

  建立空的Map,透過set()新增資料:

    const map1 = new Map()
    map1.set(1,2)
    map1.set('color','red')
    map1.set({a:1},'北京')

  使用二維陣列初始化Map:

  const map = new Map([
        [1,2],
        ['color','red'],
        [{a:1},'北京']
    ])

上面兩種程式碼均列印如下:

三、例項的屬性和方法

  • size: 返回Map例項成員總數
    console.log(map1.size) //3
  • set(key,value):新增key對應的value,返回Map 結構本身
        map1.set(1,2)
        map1.set('color','red')
        map1.set({a:1},'北京')
  • get(key): 獲取key對應的值
    console.log(map1.get(1))// 2
  • delete(key): 刪除某鍵值隊,返回一個布林值,表示刪除是否成功
    console.log(map1.delete(1)) //true
  • has(key): 某個鍵是否在當前Map物件之中
    console.log(map1.has(1)) //false
  • clear(): 清空所有的鍵值隊
    map1.clear()

四、遍歷

  • keys():返回鍵名的遍歷器
      for(let i of map1.keys()){
            console.log(i) //1 color {a:1}
        }
  • values():返回鍵值的遍歷器
    for(let i of map1.values()){
            console.log(i) //2 red 北京
        }
  • entries():返回鍵值對的遍歷器
    for(let [key,value] of map1.entries()){
            console.log(key,value) 
        }
  • forEach():遍歷每個成員
     map1.forEach((item,key) =>{
           console.log(item,key)
        })
  • for...of:Map內部已實現了迭代器,所以可以是用for...of
    for(let i of map1){
            console.log(i) //[1,2] ['color','red'] [{a:1},1]
        }

相關文章