[javascript] 맵과 셋의 활용 예시: 로그인 기록 관리

맵(Map)과 셋(Set)은 JavaScript에서 매우 유용한 자료구조입니다. 이들을 활용하여 로그인 기록을 관리하는 예시를 살펴보겠습니다.

맵(Map)으로 로그인 기록 관리

로그인 기록을 관리하기 위해 맵을 사용할 수 있습니다. 맵을 사용하면 사용자 이름(username)과 로그인 시간(timestamp)을 쌍으로 저장하여 쉽게 조회할 수 있습니다. 다음은 맵을 사용하여 로그인 기록을 관리하는 예시 코드입니다.

// 빈 맵 생성
let loginRecords = new Map();

// 사용자 로그인 기록 추가
loginRecords.set('user1', new Date('2022-01-01T12:00:00'));
loginRecords.set('user2', new Date('2022-01-02T15:30:00'));

// 사용자 로그인 기록 조회
console.log(loginRecords.get('user1')); // 2022-01-01T12:00:00
console.log(loginRecords.get('user2')); // 2022-01-02T15:30:00

위 예시에서는 빈 맵을 생성한 후에 set() 메서드를 사용하여 각 사용자의 로그인 기록을 추가하고, get() 메서드를 사용하여 특정 사용자의 로그인 시간을 조회하였습니다.

셋(Set)으로 중복 로그인 방지

셋을 사용하면 중복된 로그인을 방지할 수 있습니다. 셋은 중복된 값을 허용하지 않기 때문에 같은 사용자가 여러 번 로그인하는 것을 방지할 수 있습니다. 다음은 셋을 사용하여 중복 로그인을 방지하는 예시 코드입니다.

// 빈 셋 생성
let loggedInUsers = new Set();

// 사용자 로그인 시도
function login(username) {
  if (loggedInUsers.has(username)) {
    console.log('이미 로그인 중인 사용자입니다.');
  } else {
    loggedInUsers.add(username);
    console.log(username + ' 님이 로그인하였습니다.');
  }
}

// 사용자 로그아웃
function logout(username) {
  loggedInUsers.delete(username);
  console.log(username + ' 님이 로그아웃하였습니다.');
}

// 사용자 로그인 시도 (중복 로그인)
login('user1'); // user1 님이 로그인하였습니다.
login('user1'); // 이미 로그인 중인 사용자입니다.

// 사용자 로그아웃
logout('user1'); // user1 님이 로그아웃하였습니다.

위 예시에서는 빈 셋을 생성한 후에 has() 메서드를 사용하여 사용자가 이미 로그인 중인지 확인하고, add() 메서드를 사용하여 새로운 로그인 기록을 추가하였습니다.

이처럼 맵과 셋은 JavaScript에서 로그인 기록 관리와 같은 데이터 구조를 효과적으로 관리하는 데에 유용하게 활용될 수 있습니다.


참고 문헌: