자바스크립트에는 배열의 요소들을 정렬시켜주는 내장함수인 sort()가 존재한다.
이번 포스트에서는 sort() 함수의 사용법에 대해 알아보자.
arr.sort([compareFunction])
compareFunction 은 정렬 순서를 정의하는 함수이다. 이 것을 생략하면, 배열의 요소들은 문자열로 취급되어, 유니코드 값(사전 순) 순서대로 정렬된다. 여기서 주의할 점은 원본 배열이 정렬된다는 것이다.
let arr1 = ["b", "a", "d", "c"]
let arr2 = [5, 1, 2, 10, 3]
arr1.sort()
arr2.sort()
console.log(arr1) // ["a", "b", "c", "d"]
console.log(arr2) // [1, 10, 2, 3, 5]
compareFunction을 사용하면 숫자를 오름차순 정렬 가능하다. 이 함수는 두 개의 배열 요소를 파라미터로 입력 받는다. a, b 두개의 요소를 파라미터로 입력받을 경우 반환값이 0보다 작을 경우 a가 b보다 앞에 오도록 정렬하고 0보다 클 경우 b가 a보다 앞에 오도록 정렬한다. 0을 반환하면 a와 b의 순서를 변경하지 않는다.
let arr = [5, 1, 2, 10, 3]
arr.sort((a, b) => a - b) // 오름차순 정렬
console.log(arr) // [1, 2, 3, 5, 10]
arr.sort((a, b) => b - a) // 내림차순 정렬
console.log(arr) // [10, 5, 3, 2, 1]
compareFunction을 사용하여 객체의 속성 중 하나의 값을 기준으로 정렬 할 수 있다.
let items = [
{ name: 'Eric', age: 15 },
{ name: 'Sam', age: 30 },
{ name: 'Harry', age: 25 },
{ name: 'James', age: 10 },
];
items.sort((a, b) => a.age - b.age) // 나이를 기준으로 오름차순 정렬
items.sort((a, b) => { // 이름을 기준으로 오름차순 정렬
let nameA = a.name.toUpperCase(); // 대소문자 구분 안하기
let nameB = b.name.toUpperCase(); // 대소문자 구분 안하기
if (nameA < nameB) {
return -1;
} else if (nameA > nameB) {
return 1;
} else{
return 0;
}
})
이번 포스트에서는 자바스크립트의 배열의 요소들을 정렬시켜주는 내장함수인 sort()에 대해서 알아보았다. 배열을 정렬할 상황이 많을텐데 그 때마다 유용하게 잘 사용해야겠다. 그럼 안녕!! (ノ◕ヮ◕)ノ*:・゚✧