본문 바로가기
컴퓨터 언어/JavaScript

[JavaScript] JavaScript 배열 숫자 정렬

by 테크케찰 2021. 8. 2.
const arr = [1, 101, 10001, 222];
console.log(arr); // [ 1, 101, 10001, 222 ]
arr.sort();
console.log(arr); // [ 1, 101, 10001, 222 ]

위 코드는 자바스크립트에서 배열을 정렬하는 코드입니다.

숫자를 정렬하려고 했는데 javascript 내장 메서드인 sort 함수를 사용하니 이상한 결과가 나옵니다.

왜 그럴까요

JavaScript에서 sort 함수를 실행했을 때 배열을 문자열을 기준으로 정렬해주기 때문입니다.

따라서 js에서 숫자를 기준으로 배열을 정렬해주고 싶다면 아래와 같이 코드를 수정해주어야 합니다. 

const arr = [1, 101, 10001, 222];
console.log(arr); // [ 1, 101, 10001, 222 ]
arr.sort((a, b)=>{
    return a-b;
});
console.log(arr); // [ 1, 101, 222, 10001 ]

원하는대로 숫자가 정렬되는 것을 알 수 있습니다.

arr.sort([compareFunction])

JavaScript 문서 안에서 sort 함수에 대한 내용인데요, compareFunction이란 함수를 통해 정렬을 커스터마이징할 수 있습니다.

compareFunction의 반환값에 따라 정렬을 시켜줄 수 있는데요, 자세한 내용은 아래 링크를 참고하시면 좋을 것 같습니다.

 

참고

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

 

Array.prototype.sort() - JavaScript | MDN

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

developer.mozilla.org