2021-07-24 TIL

til  · 1 min read

Facts

  • 더블유키 활동 리팩토링 작업을 하였다.

Feelings

  • 오늘은 하루종일 코드 리팩토링 작업을 하였다. 200줄이 넘는 코드를 줄이고 반복되는 로직을 따로 분리하는 작업을 하면서 컴포넌트 디자인 패턴을 정해놓고 개발할 필요성을 많이 느꼈다.

Findings

  • sort 함수
  • sort함수의 인자 compareFunction을 생락햐면 배열은 각 요소의 문자열 변환에 따라 유니코드 코드 포인트 값에 따라 정렬된다.
  • sort함수는 원 배열이 정렬되고 정렬된 배열을 반환한다(복사본 배열 x).

  • 숫자 배열을 정렬 시 아래 compareFunction을 사용해주면 된다.

    function compareNumbers(a, b) {
      return a - b;
    }
    
  • 문자열 배열을 사전순으로 정렬할 때 위의 compareFunction을 사용하게 되면 안된다.

    function compareNumbers(a, b) {
      return a - b;
    }
    
    console.log(["10", "01001", "44", "999"].sort()); // [ '01001', '10', '44', '999' ]
    
    console.log(["10", "01001", "44", "999"].sort(compareNumbers)); // [ '10', '44', '999', '01001' ]
    
    • javascript에서 정수문자열에 대한 연산은 정수로 변환한 값에 대해 연산이 진행된다.
    • ‘01001’ - ‘10’의 경우 1001 - 10 = 991 값이 된다. 따라서 위의 compareNumbers 함수를 인자로 넘겨줄 경우 ‘10’ 뒤에 ‘01001’이 오게 된다.
  • 따라서 정렬할 배열의 요소 type에 맞게 sort함수의 compareFunction인자를 설정해줄 필요가 있다.

Future Action Plans

  • 부캠 2주차 준비 잘 합시다.
  • 플러터 학습하기.

Feedback

  • 없음.