[1일1js] Array.prototype.sort()

Lee Tae-Sung·2021년 12월 29일
0

JS

목록 보기
48/56

알고리즘 문제를 풀다가 sort 함수가 필요했다.

python에서는 나름대로 자유자재로 sort를 사용 했었는데

js에서 그대로 적용해보니 안됨...

찾아보니 js에서 dictionary를 sort하려면 함수를 새로 만들어 이용하는 방법을 주로 활용했다.

그래서 겸사겸사 mdn 문서의 sort함수를 한번 쭉 공부하기로 결정

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

Array.prototype.sort()

구문

arr.sort([compareFunction])

매개변수

정렬 순서를 정의하는 함수. 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬됩니다.

반환 값

정렬한 배열. 원 배열이 정렬되는 것에 유의하세요. 복사본이 만들어지는 것이 아닙니다.

파이썬에서 sort()과 sorted() 차이
sort()가 기존의 리스트를 변경하는것
sorted()가 새로운 리스트를 만들어내는것

sorted가 더 길어서 하나의 옵션이 추가된 함수라고 암기함.

js의 sort는 python의 sort와 같다고 생각하면 됨.

설명

compareFunction이 제공되지 않으면 요소를 문자열로 변환하고 유니 코드 코드 포인트 순서로 문자열을 비교하여 정렬됩니다. 예를 들어 "바나나"는 "체리"앞에옵니다. 숫자 정렬에서는 9가 80보다 앞에 오지만 숫자는 문자열로 변환되기 때문에 "80"은 유니 코드 순서에서 "9"앞에옵니다.

=> 유니코드
https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C

compareFunction이 제공되면 배열 요소는 compare 함수의 반환 값에 따라 정렬됩니다. a와 b가 비교되는 두 요소라면,

compareFunction은

function compare(a, b) {
  if (a is less than b by some ordering criterion) {
    return -1;
  }
  if (a is greater than b by the ordering criterion) {
    return 1;
  }
  // a must be equal to b
  return 0;
}

문자열 대신 숫자를 비교하기 위해 compare 함수는 a에서 b를 뺄 수 있습니다. 다음 함수는 배열을 오름차순으로 정렬합니다 (Infinity 및 NaN이 포함되어 있지 않은 경우).

function compareNumbers(a, b) {
  return a - b;
}

sort 메소드는 함수식 (및 클로저)와 함께 편리하게 사용할 수 있습니다.
=> 아직 클로저에대한 이해가 없음
=> 내일 객체
=> 내일모레 클로저에대해 (do you know js를 또 읽고)

var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  return a - b;
});
console.log(numbers);

// [1, 2, 3, 4, 5]
profile
긍정적인 에너지를 가진 개발자, 이태성입니다.

0개의 댓글