我不确定是否能正确理解JavaScript对象映射,也无法弄清是什么错误还是这种错误。

在下面的代码中,我可以了解前3个控制台消息。

但是最后一个console.log应该不显示任何内容吗?

let key1 = 3;
let key2 = 6;
let key3 = 14;
let myMap= new Map();

myMap.set(key1, 'Buy');
myMap.set(key2, 'Buy');
myMap.set(key3, 'Sell');

console.log(myMap.get(key1));   // Buy
console.log(myMap.get(key2));   //Buy
console.log(myMap.get(key3));   //Sell
console.log(myMap.get('Buy'));   //.....nothing


MDN页面上说:“任何值(对象值和原始值)都可以用作键或值。”
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

因此,据我了解,“购买”是一个值,应同时映射到key1和key2。

有人可以确认这种行为的原因吗?谢谢

最佳答案

不,它们的意思是可以在地图中使用任何对象作为键,并且可以在地图中将任何对象存储为值。这并不意味着值也是键。那将是一种怪异,意外和不想要的行为。

关于javascript - Javascript对象Map,如果多个键映射到同一个值,如何从值中获取键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35989383/

10-12 16:24