자바스크립트 Array의 내장함수 sort.
쉽게 정렬을 위해 사용할 수 있는 내장함수다.
arr.sort([compareFunction])
compareFunction: 정렬 순서를 정의(Optional)
함수의 파라미터 값을 통해 전달된 인자를 비교하여 정렬의 순서를 정한다.
파라미터는 배열 내 요소 값 두 개가 주어진다.
function(a, b) {
// 비교 순환 시작
// 첫번째 순환
// a: 배열의 두번째 인자
// b: 배열의 첫번째 인자
// 두번째 순환
// a: 배열의 세번째 인자
// b: 배열의 두번째 인자
// ...
// 마지막 순환
// a: 배열의 마지막 인자
// b: 배열의 마지막 직전 순서 인자
}
함수를 정의하지 않으면 유니코드 코드포인트 값을 기준으로 정렬한다.
단순하게 설명하자면 숫자 배열[1, 5, 7, 10, 20, 90]을 compareFunction없이 실행하면 숫자를 스트링으로 변환하여 비교하기 때문에 [1, 10, 20, 5, 7, 90]이 된다.
// 예제
const arr = [1, 5, 7, 10, 20, 90];
arr.sort();
console.log(arr);
// 출력: [1, 10, 20, 5, 7, 90];
compareFunction은 반환 값에 따라 순서를 정의할 수 있다.
반환 값에 따라 두 요소의 순서를 바꿀지를 알게 되면 비교 규칙을 세워 정렬할 수 있다.
배열의 데이터 타입에 따라 정렬하는 방법은 다음과 같다.
const numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers);
// 출력: [1, 2, 3, 4, 5]
const numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return b - a;
});
console.log(numbers);
// 출력: [5, 4, 3, 2, 1]
const stringArray = ['Blue', 'Humpback', 'Beluga'];
stringArray.sort(function(a, b) {
if(a < b) {
return -1;
} else if(b < a) {
return 1;
} else {
return 0;
}
});
console.log(stringArray);
// 출력: ["Beluga", "Blue", "Humpback"]
const stringArray = ['Blue', 'Humpback', 'Beluga'];
stringArray.sort(function(a, b) {
if(a < b) {
return 1;
} else if(b < a) {
return -1;
} else {
return 0;
}
});
console.log(stringArray);
// 출력: ["Humpback", "Blue", "Beluga"]
정렬된 배열을 반환한다.(복사X)
MDN Array.prototype.sort() : developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
[CSS] position: static, relative, absolute, fixed (0) | 2021.04.26 |
---|---|
[CSS] display: inline, block, inline-block (0) | 2021.04.02 |
[Javascript] String replace/replaceAll (0) | 2021.03.16 |
[Web] sessionStorage vs localStorage (0) | 2021.03.13 |
[Javascript] 정규표현식 16진수 패턴 만들기 (0) | 2021.03.12 |