[JS] 오픈채팅방 - Object와 Map의 차이점

https://school.programmers.co.kr/learn/courses/30/lessons/42888

문제 접근

  • record를 순회하면서 상태(입장/퇴장)를 확인한다.
  • map을 사용해 id => nickname 쌍을 업데이트 한다.
    • 퇴장(Leave)할땐 제외한다.(nickname변화 없으므로)
  • 그 다음 record 반복을 다시 돌면서 map객체의 id 값(nickname)과 문자열을 result에 추가한다.
function solution(record) {
  const recordMap = new Map();
  const result = [];
    for (ele of record){
      let [state, id, nickname] = ele.split(' ');
      if (state !== 'Leave'){
        recordMap.set(id,nickname)
      } 
    }

    for(let i=0;i<record.length;i++){
      const [state, id, nickname] = record[i].split(' ')
      if (state === 'Enter'){
        result.push(`${recordMap.get(id)}님이 들어왔습니다.`)
      } else if((state === 'Leave')){
        result.push(`${recordMap.get(id)}님이 나갔습니다.`)
      }
    }
    return result
}

배운점

Object vs Map

  • Object
    • key : 문자열 또는 심벌 값, 중복된 값 X
    • 이터러블 하지 않음.
    • 요소 개수 확인 시 Object.keys(obj).length
  • Map
    • key : 객체를 포함한 모든 값, 중복된 값 X
    • 이터러블 함
    • 요소 개수 확인 시 map.size



댓글