• TIL: JavaScript 축약코딩 기법_단락평가

    2023. 6. 15.

    by. Soozinyy

    intro

    프로그래머스 연습문제를 풀던 중 다른사람의 풀이를 통해 '단락 평가 기법'을 새로 알게 되어 가져와 보았다.

     

    🔗 문제 링크

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

     

     

     

    풀이

    다른사람의 풀이

    function solution(array) {
        let m = new Map();
        for (let n of array) m.set(n, (m.get(n) || 0) + 1);
        m = [...m].sort((a,b) => b[1]-a[1]);
        return m.length === 1 || m[0][1] > m[1][1] ? m[0][0] : -1;
    }

     

    📍 문제의 코드

    m.set(n, (m.get(n) || 0) + 1)

    삼항연산자는 많이 봤지만 이런 방식의 코드는 생소했다. || (or) 가 쓰인 걸 봐서는 조건문과 비슷한데 말이다.

     

    이 코드의 의미는 아래 참고 문서에서 확인할 수 있었다.

    그밖의 JavaScript 축약코딩 기법에 대해 자세히 소개되어 있으니 참고하면 좋다.

     

     

    🔗 참고 문서

    https://www.sitepoint.com/shorthand-javascript-techniques/

     

     

    ✔️ 풀이 해석

    따라서 문제의 코드는 단락 평가에 의해 이렇게 해석될 수 있다.

    if(m.get(n))	{
    	m.get(n) = m.get(n) + 1;
    }else {
        m.get(n) = 0 + 1;
    }

    array가 [1, 2, 3, 3, 3, 4] 라면 for of 문에 의해 n은 순서대로 1, 2, 3, 3, 3, 4이고

    조건문 m.get(n)는 값이 null || undifined || '' 가 아니라면(=값이 존재한다면) true, 값이 null || undifined || ''라면 false를 return한다.

     

    처음에 배열의 첫번째 값 '1'이 들어오면,

    m.get(1), 즉, m.1는 undefined 이다.

    m.1가 undefined이므로 조건문의 결과는 false를 return.

    m에 1 key를 추가하고, value 값을 0+1, 즉, 1을 세팅한다.

     

    배열의 두번째 값 '2'가 들어와도 마찬가지로 false.

    m에 2 key를 추가하고, value 1을 세팅한다.

     

    배열의 세번째 값 '3'이 들어와도 마찬가지로 false.

    m에 3 key 추가하고, value 1을 세팅다.

     

    배열의 네번째 값 '3'이 들어오면,

    이번에는 m.3value 값이 1로 세팅되어 있으므로 true,

    m.3의 값을 m.3 + 1, 즉, 1+1, 2로 세팅다.

     

    이런 방법으로 배열의 모든 원소를 대상으로 반복다.

     

    Map을 console에 출력해보면 다음과 같다.

    Map(4) { 1 => 1, 2 => 1, 3 => 3, 4 => 1 }

     

    'Dev.log' 카테고리의 다른 글

    TIL: 또다시 2개의 배열  (0) 2023.06.17
    TIL: 2개의 배열  (0) 2023.06.16
    TIL: Synchronous call back과 Asynchronous call back  (0) 2023.06.14
    TIL: Git error:failed to push some refs to  (0) 2023.06.13
    TIL: 일어나 코딩해야지  (1) 2023.06.05

    댓글