搜尋

首頁  >  問答  >  主體

Map() 的奇怪行為

let key = [1,2]
 let m = new Map()
 m.set(key, "12")
 console.log(m.get(key))  // 12
 console.log(m.get([1,2]))  // undefined

為什麼當我想要取得值時不是透過鍵變數的名稱而是透過值[1,2]取得值時,卻沒有這個東西 如果你添加這樣

m.set([1,2], "12")
 m.set([1,2], "123")
 m.set([1,2], "1234")

關於地圖將會

Map(4) { (2) […] → "12", (2) […] → "12", (2) […] → "123", (2) […] → "1234" }​
size: 4​
<entries>​​
0: Array [ 1, 2 ] → "12"​​
1: Array [ 1, 2 ] → "12"​​
2: Array [ 1, 2 ] → "123"​​
3: Array [ 1, 2 ] → "1234"

P粉221046425P粉221046425261 天前495

全部回覆(1)我來回復

  • P粉680087550

    P粉6800875502024-04-04 13:33:56

    使用 === 運算子來比較金鑰。數組是對象,=== 比較對象的引用,而不是它們的值。 [1, 2] === [1, 2] 傳回 false 因為每個物件/陣列文字都會建立對新物件的新參考。這就是原因

    m.set([1,2], "12")
    m.set([1,2], "123")
    m.set([1,2], "1234")

    使用三個不同的鍵插入三個值以及原因

    m.get([1,2])

    返回 undefined

    回覆
    0
  • 取消回覆