[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



    댓글