Language/JavaScript

Array 객체 sort()

duoxi 2023. 2. 28. 11:04

sort() 메소드는 배열의 요소를 정렬한 뒤 그 배열을 반환하는 메소드이다.

 

arr.sort([compareFunction])

 

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

ex) "banana" -> "cherry", "80" -> "9"

 

따라서 문자열을 정렬하기 위해서는 compareFunction생략해도 되지만, 숫자를 정렬하기 위해서는 compareFunction을 정의해야한다.

 

compareFunction 설명

- compareFunction(a, b)0보다 작으면 a를 b보다 작다고(앞에) 정렬한다. 

- compareFunction(a, b)0보다 크면 a를 b보다 크다고(뒤에) 정렬한다.

- compareFunction(a, b)이 0이라면 a와 b를 서로에 대해 변경하지 않고 모든 다른 요소에 대해 정렬한다,

 ("참고 : ECMAscript 표준은 이러한 동작을 보장하지 않으므로 모든 브라우저(예 : Mozilla 버전은 적어도 2003 년 이후 버전 임)가 이를 존중하지는 않습니다." 라고 하니  0 반환은 최대한 사용하지 않는 게 좋을 듯하다.)

 

숫자를 오름차순 하기 위해서는 compare 함수를 다음과 같이 쓸 수 있다.

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

만약 양수(>0)를 반환한다면 a를 b보다 크다고 정렬할 것이고(a와 b의 위치를 바꿈), 음수(<0)를 반환한다면 a를 b보다 작다고 정렬할 것이다.

 

sort 메소드는 함수식과 함께 간단하게 작성할 수 있다.

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

// [1, 2, 3, 4, 5]

 

 

출처 : MDN - References - JavaScript - 표준 내장 객체 - Array - Array.protytype.sort() https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#%EC%84%A4%EB%AA%85

 

Array.prototype.sort() - JavaScript | MDN

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

developer.mozilla.org