@darknefrit

Мне кажется или 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


Почему когда я хочу получить значение не по имени переменной key а по значению [1,2] то такого нет - undefined
И если добавлять так

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"
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
@Scream034
Новичок в разработке
Это происходит потому, что в JavaScript массивы и объекты являются ссылочными типами данных, а не примитивными. Когда вы создаете массив key и добавляете его в Map, вы сохраняете ссылку на этот массив в качестве ключа. При попытке получить значение из Map по ключу [1, 2], вы создаете новый массив [1, 2], который уже не равен массиву key, сохраненному в Map. Поэтому вы получаете
undefined. Верно объяснил?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы