Javascript Map 對象/數組與map的相互轉換


Map

map的主要特點在於,除了字符串之外,它還可以使用其他類型來作為鍵值對的鍵。

Map的實例化

所有實現了iterable接口的雙元素數組結構都可以作為Map構造的參數。

如數組,map,set

//數組作為實例化參數
let params = ['key1', 'value1']
let map = new Map([params])

//map作為實例化參數
let map2 = new Map([['a', 1], ['b', 2]])
let map3 = new Map(map2)
console.log(map3);

//set作為實例化參數
let set = new Set([['a', 1], ['b', 2]]);
let map4 = new Map(set)
console.log(map4)

API:

基本操作

  • set(key,value) 返回map實例,如果已經存在key
  • get(key,value) 讀取key對應的鍵值,如果找不到就返回undefined
  • size
  • has(key) 返回布爾類型,是否含有對應鍵
  • delete(key) 刪除某個鍵,返回布爾類型
  • clear()
let map1 = new Map();
let key = 'aaa';
let obj = { "a": 1 }

//添加鍵值對
map1.set(key, 111)
map1.set(obj, 222)

//是否含有指定鍵
let bool = map1.has(key)
console.log(bool)//true

//拿到指定鍵對應的值
console.log(map1.get(key))//111

//刪除某個鍵。返回布爾值
console.log(map1.delete(obj))

//清除
map1.clear()
console.log(map1)

遍歷

  • keys() 拿到一個迭代器對象,由鍵組成
  • values() 由值組成的迭代器對象
  • entries() 鍵值對數組組成的迭代器對象
  • forEach() 遍歷
for (let i  of map1.keys()) {
   console.log(i)
}

for (let i  of map1.values()) {
   console.log(i)
}

for (const i of map1.entries()) {
   console.log(i)
}

map轉數組/map轉對象

//map 轉數組
let m = new Map([['a1', 111], ['a2', 222]])
console.log([...m])
/*
[Array(2), Array(2)]
0: (2) ["a1", 111]
1: (2) ["a2", 222]
*/

//map轉對象,只有map的鍵是字符串的時候才成立
let m1 = new Map()
let o = {"okey":{"vkey":"value"}}
let o1 = {}

for(let i in o){
    m1.set(i,o[i])
}

for(let [k,v] of m1){
    o1[k] = v
}

console.log(o1)


免責聲明!

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



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