DevSSOM

JavaScript - 배열 오름차순, 내림차순 정렬하기 sort() 본문

JavaScript/기초

JavaScript - 배열 오름차순, 내림차순 정렬하기 sort()

데브쏨 2021. 7. 25. 03:00
반응형

arr.sort()

배열을 재정렬해주는 메소드. 배열 자체가 변경되니까 사용시 주의해야함.

 

let arr = [1, 5, 4, 2, 3];

arr.sort();
console.log(arr);    // [1, 2, 3, 4, 5]

> 오름차순으로 정렬 잘됨.

 

let arr = ["a", "c", "d", "e", "b"];

arr.sort();
console.log(arr);    // ["a", "b", "c", "d", "e"]

> 알파벳순으로 정렬 잘됨.

 

let arr = [27, 8, 5, 13];

arr.sort();
console.log(arr);    // [13, 27, 5, 8]

> ?????왜 이렇게 되지????? 뭔가 이상함. 숫자를 정렬했는데 뒤죽박죽이 되어버림. 그 이유는 정렬할 때 요소를 문자열로 취급하기 때문임. 그래서 1과 2로 시작하는 13과 27이 제일 앞에 오게 된 것.

 

 

제대로 정렬을 하고 싶다면, 값을 비교해줄 수 있는 함수를 집어 넣어줘야 돼.

let arr = [27, 8, 5, 13];

arr.sort(function (a, b) {
	return a - b;
});

console.log(arr);    // [13, 27, 5, 8]

a, b 두 요소를 전달하고, a - b로 크기를 비교해서 양수인지, 음수인지, 0인지만 봐줘. a가 b보다 크면 양수로 return 하고, 같으면 0, a가 b보다 작으면 음수로 return. 내부에서 값들이 어떻게 처리되는지를 보면, a가 작으면 a를 앞으로 보내. 0을 반환하면 그대로 있고. a가 크면, b가 작은 거니까 b를 앞으로 보내고. 그래서 최종적으로 오름차순이 되는 거임.

 

 

그래서 정리해보자면

 

arr.sort()로 숫자 오름차순 정렬하기

arr.sort(function (a, b) {
	return a - b;
});

위의 내용을 화살표 함수를 사용해서 좀 더 간단하게 표현하면

arr.sort((a, b) => a - b);

 

arr.sort()로 숫자 내림차순 정렬하기

오름차순과 마찬가지로 내림차순을 하려면, b - a로 순서를 바꿔주면 됨.

arr.sort(function (a, b) {
	return b - a;
});

그래서, 화살표 함수로 간결하게

arr.sort((a, b) => b - a);

 

 

 

728x90
반응형
댓글