Map() 的奇怪行為
P粉221046425
P粉221046425 2024-04-03 15:40:52
0
1
348

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粉221046425
P粉221046425

全部回覆(1)
P粉680087550

使用 === 運算子來比較金鑰。數組是對象,=== 比較對象的引用,而不是它們的值。 [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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!