[TIL 2021.09.29] js

Kyu·2021년 9월 29일
0

TIL

목록 보기
262/322

Today I Learned
sort()

자바스크립트에서 배열이나 객체를 정렬할때 쓰인다.
UTF-16 유니코드로 정렬한다.
즉, [1,10,2,3] 을 정렬하면
문자열로 바꿔서 정렬학 때문에
[1,2,3,10] 이 아니라 [1,10,2,3] 그대로 나온다.

sort인자에 compareFunction을 쓰면
의도한대로 나온다.

sort인자의 함수의 파라미터 리턴 값을
return a-b라고 하면 오름차순,
return b-a라고 하면 내림차순이다.

그 이유는

  1. 리턴값이 양수이면 두 파라미터의 순서는 a가 앞 b가 뒤.
  2. 리턴값이 0이면 그대로.
  3. 리턴값이 음수이면 b가 앖으로 a가 뒤로.

이런식으로 내림차순,오름차순 정렬과 객체도 가지고있는 속성의 값에 따라 정렬가능하고 무궁무진하게 가능하다.

근데 어떤 규칙으로 a와 b에 비교할 값이 들어가는지 도무지 모르겠다..

let arr = [5,8,2,6];

arr.sort((a,b) => {
  console.log(`comparing ${a},${b}`);
  return a > b ? 1
               : a === b ? 0 
                         : -1;
});

console.log("\n" + arr);

콘솔창에서 a,b 비교하는 것을 확인하는데
arr의 값을 계속 바꾸면서 확인해봐도 규칙성 같은게 안보인다.
누가 설명좀 ㅠㅠ

profile
TIL 남기는 공간입니다

0개의 댓글