[JS 코딩테스트 기록] sort() 함수

개발견 배도르만·2023년 2월 27일
0

코딩테스트 with JS

목록 보기
2/2
post-thumbnail

sort()

배열을 정렬하고 새로운 순서를 반환한다.
정렬 속도와 복잡도는 각 구현방식에 따라 다르다.

배열.sort([compareFunction]) 의 형태이다.

const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
// Expected output: Array ["Dec", "Feb", "Jan", "March"]

const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
// Expected output: Array [1, 100000, 21, 30, 4]

매개변수

매개변수 compareFunction은 배열 요소의 순서를 정의하는 함수이다.

반환값

복사본이 아닌 원래의 배열이 정렬된다.

동작

매개변수에 정의된 로직으로 정렬된다.
매개변수는 필수가 아니며, 주어지지 않은 경우 문자열의 유니코드 포인트값에 따라 오름차순으로 정렬된다.

예를 들어 배열 [3, 20, 100]을 매개변수 없이 정렬하면 [100, 20, 3]이 되는 것이다. 매개변수 없는 sort() 함수에 숫자를 넣으면 문자로의 형변환이 일어난다.

매개변수가 주어진 경우 매개변수 함수의 반환 값에 따라 정렬된다.
예를 들어 매개변수가 a와 b를 비교하는 함수 compareFunction(a, b)라면

  • compareFunction(a, b)의 반환값이 0보다 작은 경우 a를 b보다 낮은 인덱스로 정렬한다.
  • 0을 반환하면 a와 b를 변경하지 않는다.
  • 0보다 크면 b를 a보다 낮은 인덱스로 정렬한다.
let arr = [7, 0, 3, 9, 1, 5];

arr.sort(function(a, b){
	return a - b; // a가 b보다 크면 양수, 작으면 음수 반환
  				  // 양수 -> b보다 a가 큰 인덱스
  				  // 음수 -> a보다 b가 큰 인덱스
})

...업데이트 예정...

profile
네 발 개발 개

0개의 댓글