Map对象set
方法用于添加新密钥/对,或更新现有密钥/对。 See docs
当我尝试用数据库结果填充它时,我一直在努力弄清楚我的Map是如何以重复键结束的:
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
答案 0 :(得分:2)
地图可以将对象作为关键字。并且仅仅因为两个对象输出为相同的字符串,并不意味着它们是同一个对象。上述代码可以通过将user.id
转换为字符串来修复,即:。
function loadUserByName(name) {
db.loadUser({ name }, (err, user) => {
users.set(String(user.id), user);
});
}