function Chat() {
let mpon = new Map();
let mpc = new Map();
let login = function(id) {
if(mpon.has(id)===false) {
mpon.set(id,true);
mpc.set(id,0);
}
else {
let count=mpc.get(id);
mpc.delete(id);
mpc.set(id,++count);
}
}
let logout = function(id) {
if(mpon.has(id)===true) {
mpon.delete(id,true);
}
}
let isOnline = function(id) {
if(mpon.has(id)===true) {
return true;
}
else {
return false;
}
}
let countOnline = function(id) {
return mpon.size;
}
let countLogins = function(id) {
if(mpc.has(id)===false) {
return 0;
}
else {
return mpc.get(id);
}
}
return {
login,
logout,
isOnline,
countOnline,
countLogins
}
}
const myChat = Chat();
myChat.login(3);
myChat.login(2);
myChat.logout(3);
console.log(myChat.countOnline()); // 1
ZnVuY3Rpb24gQ2hhdCgpIHsKICBsZXQgbXBvbiA9IG5ldyBNYXAoKTsKICBsZXQgbXBjID0gbmV3IE1hcCgpOwogIGxldCBsb2dpbiA9IGZ1bmN0aW9uKGlkKSB7CiAgICBpZihtcG9uLmhhcyhpZCk9PT1mYWxzZSkgewogICAgICBtcG9uLnNldChpZCx0cnVlKTsKICAgICAgbXBjLnNldChpZCwwKTsKICAgIH0KICAgIGVsc2UgewogICAgICBsZXQgY291bnQ9bXBjLmdldChpZCk7CiAgICAgIG1wYy5kZWxldGUoaWQpOwogICAgICBtcGMuc2V0KGlkLCsrY291bnQpOwogICAgfQogIH0KICBsZXQgbG9nb3V0ID0gZnVuY3Rpb24oaWQpIHsKICAgIGlmKG1wb24uaGFzKGlkKT09PXRydWUpIHsKICAgICAgbXBvbi5kZWxldGUoaWQsdHJ1ZSk7CiAgICB9CiAgfQogIGxldCBpc09ubGluZSA9IGZ1bmN0aW9uKGlkKSB7CiAgICBpZihtcG9uLmhhcyhpZCk9PT10cnVlKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgZWxzZSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CiAgbGV0IGNvdW50T25saW5lID0gZnVuY3Rpb24oaWQpIHsKICAgIHJldHVybiBtcG9uLnNpemU7CiAgfQogIGxldCBjb3VudExvZ2lucyA9IGZ1bmN0aW9uKGlkKSB7CiAgICBpZihtcGMuaGFzKGlkKT09PWZhbHNlKSB7CiAgICAgIHJldHVybiAwOwogICAgfQogICAgZWxzZSB7CiAgICAgIHJldHVybiBtcGMuZ2V0KGlkKTsKICAgIH0KICB9CiAgcmV0dXJuIHsKICAgIGxvZ2luLAogICAgbG9nb3V0LAogICAgaXNPbmxpbmUsCiAgICBjb3VudE9ubGluZSwKICAgIGNvdW50TG9naW5zCiAgfQp9Cgpjb25zdCBteUNoYXQgPSBDaGF0KCk7Cm15Q2hhdC5sb2dpbigzKTsKbXlDaGF0LmxvZ2luKDIpOwpteUNoYXQubG9nb3V0KDMpOwpjb25zb2xlLmxvZyhteUNoYXQuY291bnRPbmxpbmUoKSk7IC8vIDE=