[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());