자바스크립트 기본 정렬 메소드: Array.sort()

자바스크립트에는 기본적으로 정렬을 위한 메소드가 있다. 배열의 정렬 메소드인 Array.prototype.sort()가 대표적이다. sort() 메소드는 mdn에 따르면 다음과 같이 설명하고 있다.

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

기본적으로 sort 메소드는 문자열의 유니코드 코드 포인트에 따라서 정렬이 되기 때문에 sort() 메소드를 그냥 기본값으로 쓰면 숫자의 정렬이 제대로 안 된다. 다음은 예시이다.

const arr1 = [1, 30, 4, 21, 100000];
arr1.sort();
console.log(arr1);
// expected output: Array [1, 100000, 21, 30, 4] (응?)

따라서 숫자를 정렬하기 위해서는 sort() 메소드의 인자로 콜백함수를 적어주어야 한다. 아래는 예시이다.

const arr2 = [1, 30, 4, 21, 100000];
arr2.sort((a,b) => a-b); // 오름차순
console.log(arr2); // [1, 4, 21, 30, 100000]
arr2.sort((a,b) => b-a); // 내림차순
console.log(arr2); // [100000, 30, 21, 4, 1]

주의해야 할 것은 Array.prototype.sort() 메소드는 원본을 변화시키는 메소드라는 점이다.(mutable함) 따라서 원본을 보존하기 위해서는 spread syntax, Array.prototype.slice() 등을 사용하여 배열을 복사한 뒤에 사용해야 된다.

profile
피트는 구덩이라는 뜻이다 구덩이를 파다보면 좋은 것이 나오겠지 (아싸 벡스룬)

0개의 댓글