자바스크립트 sort() 메소드 사용 방법 정리

2020. 11. 20. 15:15·개발/JavaScript

자바스크립트의 sort() 메소드는 특정 배열을 정렬하고, 정렬된 배열을 리턴합니다. 기본 정렬은 오름차순이며, 요소를 문자열로 전환한 다음 UTF-16 코드 단위 값을 따라 이를 비교합니다.

배열 정렬

먼저, 문자가 담겨 있는 배열을 정렬해보도록 하겠습니다.

const fruits = ["pineapple", "cherry", "apple"];
fruits.sort();
console.log(fruits); // Array ["apple", "cherry", "pineapple"]

다음으로 숫자가 담겨 있는 배열을 정렬해 보도록 하겠습니다.

const numbers = [1, 30, 4, 21, 10000];
numbers.sort();
console.log(numbers);  // Array [1, 10000, 21, 30, 4]

앞서 언급했듯, sort() 메소드는 배열의 요소를 문자열로 전환해서 비교하기 때문에, 숫자를 비교할 때 예기치 않은 결과가 출력됐습니다. 이를 [1, 4, 21, 30, 10000]으로 정렬하려면 다음처럼 각 값을 비교해줘야 합니다(Infinity 또는 NaN은 처리 불가).

const numbers = [1, 30, 4, 21, 10000];
numbers.sort(function(a, b) {
    return a - b;
});
console.log(numbers); // Array [1, 4, 21, 30, 10000];

또는 화살표 함수를 사용해 다음과 같이 간단하게 표현할 수도 있습니다.

numbers.sort((a, b) => a - b);

이는 배열 내 두 요소에 뺄셈 연산을 진행하여, 결과가 음수일 경우 a가 b보다 작은 값으로 판단되어 앞으로 이동하고, 결과가 양수일 경우 큰 값으로 판단되어 뒤로 이동하는 방식입니다.

객체 정렬

sort()를 사용해 객체의 프로퍼티 값에 따라 이를 정렬할 수도 있습니다.

let people = [
    {name: "Jay", age: 21},
    {name: "Lee", age: 61},
    {name: "Kim", age: 41},
    {name: "Park", age: 27},
    {name: "Min", age: 11},
    {name: "Soo", age: 31},
];

// 나이 순으로 정렬
people.sort(function (a, b) {
  return a.age - b.age;
});

// 이름 순으로 정렬
people.sort(function(a, b) {
  let nameA = a.name.toUpperCase();
  let nameB = b.name.toUpperCase();
  if (nameA < nameB) {
    return -1;
  }
  if (nameA > nameB) {
    return 1;
  }

  return 0; // 이름이 동일한 경우
})

 

참고 자료:

Array.prototype.sort(), Mozilla

'개발 > JavaScript' 카테고리의 다른 글

자바스크립트 동기/비동기 차이점은 무엇일까요?  (0) 2020.11.23
자바스크립트 문자열로 함수를 실행하는 방법  (0) 2020.11.20
자바스크립트 메모이제이션 설명  (0) 2020.11.17
'개발/JavaScript' 카테고리의 다른 글
  • 자바스크립트 즉시 실행 함수(IIFE)란?
  • 자바스크립트 동기/비동기 차이점은 무엇일까요?
  • 자바스크립트 문자열로 함수를 실행하는 방법
  • 자바스크립트 메모이제이션 설명
휘Hwi
휘Hwi
여행, 사진, 개발, 책 이야기를 기록하는 여행자 휘의 블로그 𓂍
  • 휘Hwi
    휘: 끝나지 않은 이야기
    휘Hwi
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 기록
        • 일상 에세이
        • 인사이트
        • 투자와 재테크
        • 코인 이야기
        • 아카이빙
        • 집무실 레터
        • 사랑에 대하여
        • 번역 이야기(完)
        • 프리랜서 일지(完)
      • 여행
        • 🌎 세계 여행기 S1 (完)
        • 🌊 삼삼한 여행기 (完)
        • 🚶 온더로드
        • 🇯🇵 일본
        • 🏝️ 발리
        • 🇻🇳 베트남
        • 🇱🇰 스리랑카
        • 🇮🇳 인도
        • 🇹🇭 태국
        • 🇸🇬 싱가포르
        • 🇦🇺 호주
        • 🇭🇰 홍콩
        • 🇰🇷 한국
        • 🍚 여행자의 한 끼
        • ℹ️ 여행 정보
      • 사진
        • 사진가
        • 사진 이론과 생각
        • 사진 관련 정보
      • 영상
        • 파이널컷 모션 공부
        • 고프로 GoPro
        • 영상 관련 정보
      • 책
        • 책 읽고 쓰기
      • 개발 N
        • 티스토리
        • Internet
        • HTML
        • CSS
        • JavaScript
        • Typescript
        • React
        • Node.js
        • Express
        • NestJS
        • Python
        • Django
        • MySQL
        • MongoDB
        • AWS
        • Deployment
        • Terminal
        • Git N
        • Glossaries
        • Articles
        • Projects
        • TIL;
      • 미분류
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
휘Hwi
자바스크립트 sort() 메소드 사용 방법 정리
상단으로

티스토리툴바