[javascript] 배열 정렬하기

배열 요소값이 순차적으로 되어있지 않은 경우 비교함수를 인자로 넣어 오름차순, 또는 내림차순으로 정렬할 수 있습니다.

배열의 정렬은 배열 자체를 정렬하며, 별도의 반환 값은 없습니다.

사용방법은 아래와 같습니다.

Array.sort(function(a,b){
return 비교값
});

비교값에 따른 정렬 기준은 다음과 같습니다. 반환하는 비교 결과값은 반드시 정수여야 하며, 양수, 음수에 따라 정렬 여부가 결정됩니다.

비교결과 값

정렬 방법

비교값 > 0

a가 b보다 앞(작은인덱스)에 위치합니다.

비교값 = 0

a와 b의 위치를 변경하지 않음

비교값 < 0

b가 a보다 앞(작은인덱스)에 위치합니다.

비교값은 넘어온 인자 a, b 두 값을 비교하는 식이 됩니다.

비교 기준에 따라 오름차순, 또는 내림차순 정렬이 됩니다.

숫자 정렬

const arr1 = [3, 2, 7, 1, 4, 1, 6, 9, 8];
console.log(arr1.sort(function(a, b){return a - b;}));// 내림 차순 정렬은 b - a

문자열 정렬

const arr2 = ['펭수', '라이언', '어피치', '콘', '브라운', '무지', '라이언', '어피치', '콘', '콘'];
// 반환값은 반드시 양수, 음수인 정수여야 정렬 기준으로 처리됨. 
// ( a > b 로 비교결과를 반환하면 true/false를 반환하기 때문에 정렬이 안됨)
console.log(arr2.sort(function(a, b){return a > b ? 1:-1;}));

배열 순서를 반대로 바꾸기

reverse() 메서드를 사용하면 배열의 순서를 반대로 바꿀 수 있습니다.

마찬가지로 배열이 긴 경우 부하가 많이 걸리므로 사용에 신중해야 합니다.

const arr3 = ['펭수', '라이언', '어피치', '콘', '브라운', '무지', '라이언', '어피치', '콘', '콘'];
console.log(arr3.reverse());