TIL - 23

박지훈·2021년 2월 9일
0

TIL

목록 보기
20/46
post-thumbnail

✏️공부한것

sortBy 메소드 함수작성하여 만들기

_.sortBy = function (arr, transform, order) {   
 //      transform : 이해하기 편하게 바꾸는 함수      [123.3 , 612.3, 82.11 ] <- 이럴경우 반올림,반내림 해서 표준편차를 줄여 이해하기 편하게 바꾸는 함수
 order = order || 1;                  //order의 값을 넣었으면 order에 넣은값을쓰고 아니면 1을 쓴다
 transform = transform || _.identity;   //값을 보기편하게 바꿀거면 transform쓰고   함수가 없으면 값 고대로 쓴다 -> identity  part1에서 인자값 그대로 리턴하는 함수 
 const arrCloned = _.slice(arr);      // 참조타입이라 transform 함수로 인해 원본배열에 영향이 있어 slice로 복사
 return arrCloned.sort(function (a, b) {   // 복사한배열로 .sort 메소드 적용 -> transform 함수로 변환후 비교 
   if (transform(a) < transform(b)) {//compareFunction(a,b)이 0보다 작으면 a가 먼저 -> 오름차순  , a의 인덱스가 낮아야 먼저옴 
     return -1 * order; // 만약 a보다 b가 더 크면  a가 먼저와야되니깐 -> 0보다 작아야되니깐 -> -1을 곱함   
   }                             //0보다 작을경우 (a)가 먼저 ,  0이면 (a,b)말고 다른요소 비교  , 0보다 큰 경우 (b)가먼저 
  // 세 번째 인자인 order는 정렬의 방향을 나타냅니다. 생략되거나 1을 입력받은 경우 오름차순, -1을 입력받은 경우 내림차순으로 정렬합니다.
   return order;    //27 24 26    
 });
};

✏️Today

처음에 sort메소드 조차 이해하기 어려워
손도 못댔는데 천천히 읽어보면그렇게 헷갈린거지 어렵진 않았던 문제였다
sortBy 랑 sort랑 별개, 반대 라고 생각하면 이해하기쉬웠다
sort는 사전식비교
예: [3, 1000 , 200 ] 을 오름차순으로 정렬할경우
[1000 < 200 < 3 ] 으로 된다

0개의 댓글