fork(2) download
  1. function Chat() {
  2. const onlineStatus = new Map();
  3. const loginCounts = new Map();
  4. let onlineCount = 0;
  5.  
  6. function login(id) {
  7. if (!onlineStatus.has(id) || !onlineStatus.get(id)) {
  8. onlineStatus.set(id, true);
  9. onlineCount++;
  10. if (!loginCounts.has(id)) {
  11. loginCounts.set(id, 1);
  12. } else {
  13. loginCounts.set(id, loginCounts.get(id) + 1);
  14. }
  15. }
  16. }
  17.  
  18. function logout(id) {
  19. if (onlineStatus.has(id) && onlineStatus.get(id)) {
  20. onlineStatus.set(id, false);
  21. onlineCount--;
  22. }
  23. }
  24.  
  25. function isOnline(id) {
  26. return onlineStatus.has(id) && onlineStatus.get(id);
  27. }
  28.  
  29. function countOnline() {
  30. return onlineCount;
  31. }
  32.  
  33. function countLogins(id) {
  34. return loginCounts.has(id) ? loginCounts.get(id) : 0;
  35. }
  36.  
  37. return {
  38. login,
  39. logout,
  40. isOnline,
  41. countOnline,
  42. countLogins
  43. }
  44. }
  45.  
  46. const myChat = Chat();
  47. myChat.login(3);
  48. myChat.login(2);
  49. myChat.logout(3);
  50. console.log(myChat.countOnline()); // 1
  51. console.log(myChat.countLogins(3)); // 1
  52. console.log(myChat.countLogins(2)); // 1
  53. myChat.login(3);
  54. console.log(myChat.countLogins(3)); // 2
Success #stdin #stdout 0.31s 39244KB
stdin
Standard input is empty
stdout
Standard output is empty