sort
자바스크립트 배열 메소드 sort를 활용하여 요소를 정렬하는 방법입니다.
구문
arr.sort([compareFunction]);
원본 배열입니다.
const arr = [5, 100, 20];
비교함수를 전달하지 않을 때에는 숫자의 크기에 관계없이 문자열로 변환된 후 Unicode를 기준으로 정렬합니다.
const arr = [5, 100, 20];
console.log(arr); // [5, 100, 20]
arr.sort();
console.log(arr); // [100, 20, 5]
숫자가 문자열로 변환되어서 비교되기 때문에 숫자의 크기에 관계없이
1로 시작하는 100이 2로 시작하는 20보다 앞에 나옵니다.
숫자의 크기에 따라 정렬하기 위해서는 비교함수를 전달해야 합니다.
오름차순 정렬
const arr = [5, 100, 20];
console.log(arr); // [5, 100, 20]
arr.sort((a, b) => {
if (a > b) {
return 1;
} else if (a < b) {
return -1;
} else {
return 0;
}
});
console.log(arr); // [5, 20, 100]
비교함수 규칙
- 매개변수로 두개의 값(a, b)을 전달합니다.
- 배열내의 임의의 요소 a와 b를 비교할 때
- 반환되는 값이 0보다 크면 a가 b보다 앞에 옵니다.
- 반환되는 값이 0보다 작으면 b가 a보다 앞에 옵니다.
- 반환되는 값이 0이면 순위를 변경하지 않습니다.
다음과 같이 줄여서 쓸 수 있습니다.
const arr = [5, 100, 20];
console.log(arr); // [5, 100, 20]
arr.sort((a, b) => a - b);
console.log(arr); // [5, 20, 100]
내림차순 정렬
a와 b의 위치만 바꿔줍니다.
const arr = [5, 100, 20];
console.log(arr); // [5, 100, 20]
arr.sort((a, b) => b - a);
console.log(arr); // [100, 20, 5]
응용
10으로 나눈 나머지를 기준으로 오름차순 정렬합니다.
const arr = [55, 19, 31];
console.log(arr); // [55, 19, 31]
arr.sort((a, b) => (a % 10) - (b % 10));
console.log(arr); // [31, 55, 19]
각 문자열의 길이를 기준으로 오름차순 정렬합니다.
const arr = ["strawberry", "apple", "orange"];
console.log(arr); // ["strawberry", "apple", "orange"]
arr.sort((a, b) => a.length - b.length);
console.log(arr); // ["apple", "orange", "strawberry"]
MDN document - Array.prototype.sort()
'자바스크립트' 카테고리의 다른 글
[JAVASCRIPT] 배열 내의 요소 무작위로 섞기(shuffle) (0) | 2019.11.02 |
---|---|
[JAVASCRIPT] 배열 필터링하는 방법(걸러내기) - filter (0) | 2019.08.10 |
[JAVASCRIPT] 배열에 요소 추가하는 방법 - push, unshift (0) | 2019.08.07 |
[JAVASCRIPT] 날짜 확인하기 Date 객체 사용 방법 (0) | 2019.08.06 |
[JAVASCRIPT] 문자열 혹은 배열이 특정 요소를 포함하는지 확인 - includes() (1) | 2019.08.06 |