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
- 없음.