“sort()” 함수는 JavaScript 배열을 정렬하는 데 사용되는 내장 함수입니다. 선택적으로 “compareFunction” 함수를 활용하여 정렬 순서를 다양하게 지정할 수 있습니다. 또한 이 함수를 사용하면 숫자나 사용자 정의 객체와 같은 다른 유형의 데이터도 정렬할 수 있습니다.”compareFunction”함수는 정렬에 활용 범위를 더 넓힐 수 있기 때문에 알아 두는 것이 좋습니다.
◎ 구문 |
array.sort(compareFunction)
l “array”: 정렬하려는 배열입니다.
l “compareFunction” (선택 사항): 정렬 순서를 지정하는 함수입니다. 이 함수를 사용하지 않으면 배열은 기본적으로 문자열로 정렬됩니다.
”compareFunction” 함수 : “compareFunction”는 정렬에 사용하는 비교 함수입니다. 비교 함수는 두 개의 인수를 받고 아래 규칙에 따라 값을 반환해야 합니다.
l “compareFunction(a, b)”이 0보다 작으면 “a”를 “b”보다 앞에 놓습니다.
l “compareFunction(a, b)”이 0이면 “a”와 “b”의 순서를 변경하지 않습니다.
l “compareFunction(a, b)”이 0보다 크면 “b”를 “a”보다 앞에 놓습니다.
◎ 1. 기본 예제 |
코드는 “fruits” 배열을 알파벳 순서대로 정렬합니다. 기본 동작은 각 요소를 문자열로 변환하고 사전 순으로 정렬하는 것입니다. 정렬 후 “fruits” 배열은 다음과 같이 정렬됩니다. 결과는 “["apple", "banana", "cherry", "date"] 입니다.”
const fruits = ["apple", "banana", "cherry", "date"];
fruits.sort(); // 기본적으로 문자열 순서로 정렬됩니다.
[출력]
["apple", "banana", "cherry", "date"]
◎ 2. 숫자 배열을 오름차순으로 정렬 |
“compareFunction” 함수를 사용하여 다양한 방식으로 정렬 순서를 지정할 수 있습니다. 아래 샘플은 숫자 배열을 오름차순으로 정렬합니다.
const numbers = [4, 2, 9, 1, 5];
numbers.sort((a, b) => a - b);
[출력]
[1, 2, 4, 5, 9]
◎ 3. 숫자 배열을 내림차순으로 정렬 |
“compareFunction” 함수로 숫자 배열을 내림차순으로 정렬합니다.
const numbers = [4, 2, 9, 1, 5];
numbers.sort((a, b) => b - a);
[출력]
[9, 5, 4, 2, 1]
◎ 4. 객체 배열을 특정 속성 기준으로 정렬 |
“compareFunction” 함수로 객체 배열의 price 값을 기준으로 객체 전체를 오름차순으로 정렬합니다.
const products = [
{ name: "Laptop", price: 1000 },
{ name: "Phone", price: 500 },
{ name: "Tablet", price: 300 },
];
products.sort((a, b) => a.price - b.price);
[출력]
[
{ name: "Tablet", price: 300 },
{ name: "Phone", price: 500 },
{ name: "Laptop", price: 1000 }
]
◎ 5. 문자열 배열을 길이로 정렬 |
“compareFunction” 함수로 각 문자열의 길이를 기준으로 해서 객체를 오름차순으로 정렬합니다.
const fruits = ["apple", "banana", "cherry", "date"];
fruits.sort((a, b) => a.length - b.length);
[출력]
["date", "apple", "banana", "cherry"]
◎ 6. 대소문자를 무시하고 알파벳 순으로 정렬 |
“compareFunction” 함수로 대소문자 무시한 알파벳 순으로 정렬합니다. toLowerCase() 함수는 문자를 소문자로 변경합니다. 대문자로 변경하는 함수는 toUpperCase() 입니다.
[참고]
자바스크립트 대소문자 변경하는 함수 사용하기
https://mainia.tistory.com/7031
const names = ["Alice", "bob", "Eve", "Dave"];
names.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
[출력]
["Alice", "bob", "Dave", "Eve"]
'웹 프로그래밍 > 자바스크립트' 카테고리의 다른 글
자바스크립트 숫자 여부를 판단하는 isNaN 함수 사용하기 (0) | 2023.12.07 |
---|---|
자바스크립트 함수 reverse() 배열 요소 역순으로 뒤집는 방법 (1) | 2023.12.03 |
자바스크립트 map() 함수 배열 값을 변형해서 새로운 배열 만들기 (2) | 2023.12.03 |
자바스크립트 filter() 함수 배열에서 특정 조건 만족하는 데이터 찾기 (0) | 2023.12.03 |
자바스크립트 대소문자 변경하는 함수 사용하기 (2) | 2023.11.29 |
자바스크립트 함수 slice() 배열의 일부를 추출해서 새로 만들기 (2) | 2023.11.28 |
자바스크립트 함수 join() 배열을 문자열로 바꾸기 (2) | 2023.11.27 |
자바스크립트(Javascript) 함수 concat() 배열 값을 합치는 방법 (1) | 2023.11.22 |