suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Seltsames Verhalten von Map()

1

2

3

4

5

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

Warum, wenn ich den Wert nicht über den Namen der Schlüsselvariablen, sondern über den Wert[1,2] erhalten möchte, gibt es so etwas nicht Wenn du so hinzufügst

1

2

3

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

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

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

Über die Karte

1

2

3

4

5

6

7

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粉221046425271 Tage vor507

Antworte allen(1)Ich werde antworten

  • P粉680087550

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

    使用 === 运算符来比较密钥。数组是对象,=== 比较对象的引用,而不是它们的值。 [1, 2] === [1, 2] 返回 false 因为每个对象/数组文字都会创建对新对象的新引用。这就是原因

    1

    2

    3

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

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

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

    使用三个不同的键插入三个值以及原因

    1

    m.get([1,2])

    返回 undefined

    Antwort
    0
  • StornierenAntwort