오픈채팅방 자바스크립트

function solution(record) {
    let result = [];
    
    record = record.map(e => e.split(' '));
    
    let map = record.reduce((acc,e) => e[2] ? acc.set(e[1],e[2]) : acc ,new Map())
    
    record.forEach(e => {
        if(e[0] == 'Enter') result.push(`${map.get(e[1])}님이 들어왔습니다.`)
        if(e[0] == 'Leave') result.push(`${map.get(e[1])}님이 나갔습니다.`)
    })
    
    return result
}

공백을 기준으로 split 메소드로 분리한다.
반복문으로 사용자 아이디(elem[1]) 닉네임(elem[2])을 맵에 저장한다. 맵의 키는 중복될 경우 최근 저장한 값으로 변경되기 때문에 userID에 대한 최신 닉네임이 value로 저장된다.
단 Leave의 경우 닉네임[elem[2]]이 없기 때문에 저장할 경우 undefined가 vlaue로 들어가기 때문에 저장하지 않고 넘어간다.

Enter의 경우와 Leave의 경우를 구분하여 map에서 꺼내 쓴다.

좋은 웹페이지 즐겨찾기