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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板