Javascript映射有重复的键
Map对象Javascript映射有重复的键,javascript,Javascript,Map对象set方法用于添加新密钥/对,或更新现有密钥/对 我一直在努力弄清楚,当我试图用数据库结果填充地图时,我的地图是如何以重复键结束的: let users = new Map(); function loadUserByName(name) { db.loadUser({ name }, (err, user) => { users.set(user.id, user); }); } loadUser('george'); u
set
方法用于添加新密钥/对,或更新现有密钥/对
我一直在努力弄清楚,当我试图用数据库结果填充地图时,我的地图是如何以重复键结束的:
let users = new Map();
function loadUserByName(name) {
db.loadUser({ name }, (err, user) => {
users.set(user.id, user);
});
}
loadUser('george');
users.forEach( (item) => { console.log(item.key); } );
// Output:
// 57bbfcb47ff30b00db69ae87
loadUser('george');
users.forEach( (item) => { console.log(item.key); } );
// Output:
// 57bbfcb47ff30b00db69ae87
// 57bbfcb47ff30b00db69ae87
贴图可以将对象作为关键点。仅仅因为两个对象输出为同一个字符串,并不意味着它们是同一个对象。可以通过将
user.id
转换为字符串来固定上述代码,即:
function loadUserByName(name) {
db.loadUser({ name }, (err, user) => {
users.set(String(user.id), user);
});
}
根据-映射中的键相等基于“相同值”算法:根据===运算符的语义,键被视为相等。