[JavaScript] - sort 함수

2024. 11. 21. 10:22·개발/JavaScript

Sort() 함수

배열을 오름차순으로 아니면 원하는 함수를 넣어서 요구에 맞게 정렬을 할 수 있는 함수이다.

알고리즘을 풀면서 조금 여럿 알아낸 것이 있어서 기록하려고 한다!

 


sort() 함수는 기본적으로 문자열을 정렬하는 함수

let strs = ["a", "y", "t"];

strs.sort(); // [ 'a', 't', 'y' ]

 

문자열을 정렬하는 함수 이기 때문에 다양한 상황이 발생하는데, 

제일 많이 발생하는 건 역시 숫자로 된 배열을 정렬할 때 이다.

let numbers = [5, 20, -10];

numbers.sort() // [ -10, 20, 5 ]
// !! 정렬이 안됨

 

왜 이런 현상이 발생할까? 알아보니 sort() 함수는 아까부터 강조 했듯이 문자열을 정렬하는 함수이다.

그렇기 때문에 숫자 배열을 정렬할 때도 비교를 할 때, 문자열로 변환 후 정렬을 한다.!

심지어 20이라면 문자열로 "20"인데 제일 앞에있는 "2"를 기준으로 -10이면 "-"를 기준으로 비교한다는 것이다.

 

그래서 저 예시를 볼 때, sort() 함수는 "5", "2", "-"의 문자열을 비교한 것이고, 유니코드를 기준으로 비교를 하기 때문에

let numbers = [5, 20, -10];

console.log(numbers[0].toString().charCodeAt(0)) // "5" : 53
console.log(numbers[1].toString().charCodeAt(0)) // "2" : 50
console.log(numbers[2].toString().charCodeAt(0)) // "-" : 45

numbers.sort() // [ -10, 20, 5 ]

 

이러한 결과를 얻는다는 것을 볼 수 있다.

 

그래서 sort() 함수를 숫자 배열에서 원하는 대로 오름차순, 내림차순으로 배열 하기 위해 sort에 인자로 함수를 넣어 구현하면 된다.

 

// 오름 차순 정렬
let numbers = [5, 20, -10];

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

console.log(numbers) // [ -10, 5, 20 ]

// 내림 차순 정렬
numbers.sort((a, b) => b - a)

// 이렇게도 쓸 수 있다.
numbers.sort(function(a, b) {
  return a - b;
});

console.log(numbers) // [ 20, 5, -10 ]

 

배열 중 두 요소를 인자로 넣어 양수이면 a - b 기준으로

양수이면 b 가 a 보다 앞으로

음수이면 a 가 b 보다 앞으로

같으면 변동 없이 정렬이 진행된다.

 


간단한 상식?인 것 같지만 그래도 이렇게 분석하고 기록하면 잊어버리지 않고 오래 갈 것이다! 

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

[JavaScript] - Event Bubbling & Capturing  (0) 2024.12.16
[JavaScript] - for, while 반복문  (0) 2024.12.07
[JavaScript] - 전개 구문  (2) 2024.11.20
[JavaScript] - 연산자 ==, ===  (1) 2024.11.08
[JavaScript] - 입력 받기 (fs, readline)  (1) 2024.11.08
'개발/JavaScript' 카테고리의 다른 글
  • [JavaScript] - Event Bubbling & Capturing
  • [JavaScript] - for, while 반복문
  • [JavaScript] - 전개 구문
  • [JavaScript] - 연산자 ==, ===
Huni2397
Huni2397
같이 성장하고 공유하는 재미를 아는 개발자
  • Huni2397
    Huni Dev
    Huni2397
  • 전체
    오늘
    어제
    • 분류 전체보기 (23)
      • CS 공부 (7)
        • 컴퓨터 구조 (0)
        • 네크워크 (3)
        • Web (2)
        • 프로그래밍 (2)
      • 개발 (12)
        • React (2)
        • JavaScript (7)
        • TypeScript (3)
      • 자격증 (2)
        • 정보처리기사 (2)
        • 컴퓨터활용능력 (0)
      • 프로젝트 (1)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    styled-component
    정보처리기사
    javascript
    오블완
    알고리즘
    typescript
    CS
    노베이스
    연산자
    for of
    전개 구문
    정처기
    티스토리챌린지
    코딩테스트
    react
    코테준비
    network
    합격
    pagenation
    페이지네이션
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Huni2397
[JavaScript] - sort 함수
상단으로

티스토리툴바