자바스크립트에는 배열의 요소들을 정렬시켜주는 내장함수인 sort()가 존재한다.
이번 포스트에서는 sort() 함수의 사용법에 대해 알아보자.

1. 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]

2. 오름차순, 내림차순 정렬

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]

3. 객체 정렬

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()에 대해서 알아보았다. 배열을 정렬할 상황이 많을텐데 그 때마다 유용하게 잘 사용해야겠다. 그럼 안녕!! (ノ◕ヮ◕)ノ*:・゚✧

profile
할 수 있다!!!

0개의 댓글