sort 함수를 이용한 정렬

2020. 11. 9. 15:09·프로그래밍 언어/JavaScript

arrayObj.sort(sortFunction)

arrayObj는 임의의 Array 객체이며 sortFunction은 요소 순서를 결정하는 데 사용되는 함수이다.

sort 함수를 이용하면 문자, 숫자, Object 정렬 등을 수행할 수 있다.

참고로 sort 함수는 원본 배열을 조작하여 정렬시킨다. 정렬된 새로운 배열을 새로 생성하지 않는다.

1. 문자 정렬

 

const arr = ["fff", "hhh", "aaa", "ccc"]; 
arr.sort(); console.log(arr);

 

일반적인 정렬 방식이며, 아스키코드 문자 순서로 정렬된다.

2. 숫자 정렬

위의 문자 정렬과 동일한 방법으로 숫자를 정렬하게 되면 아스키코드 순으로 정렬되므로 우리가 원하는 대로 숫자를 정렬되지 않는다.

그러므로, 숫자를 정렬할 때는 다른 방법을 이용해야 한다.

 

다음은 오름차순으로 숫자를 정렬하는 방법이다.

 

const arr = [2, 222, 5, 333, 10, 4]; 
arr.sort((a, b) => a-b); 
console.log(arr);

 

숫자들은 가장 작은 요소에서 가장 큰 요소 순서대로 정렬된다.

 

다음은 내림차순으로 숫자를 정렬하는 방법이다.

 

const arr = [2, 222, 5, 333, 10, 4]; 
arr.sort((a, b) => b-a); 
console.log(arr);

 

숫자들은 가장 큰 요소에서 가장 작은 요소 순서대로 정렬된다.

3. Object 정렬

이번에는 Object 안에 있는 프로퍼티의 값들을 서로 비교하여 정렬을 해보겠다.

학생 이름을 오름차순으로 정렬

 

const student = [ 
  {name : "Ron", age : 26}, 
  {name : "Nizel", age : 25}, 
  {name : "Danny", age : 19}, 
  {name : "Chris", age : 20}, 
  {name : "David", age : 26}, 
  {name : "Dan", age : 21} 
]; 

student.sort((a, b) => { 
  return a.name < b.name ? -1 : a.name > b.name ? 1 : 0; 
}); 

console.log(student);

 

sort 함수의 인자로 들어온 콜백 함수는 student 배열 내의 2개의 객체를 인자로 가지며 비교를 통해 결과값을 계산한다. sort 함수는 콜백 함수에 의해 반환된 이 결과값을 바탕으로 요소들을 정렬시킨다. 기본적으로 이 결과값이 0보다 크다면 즉 양수이면, 두 요소의 위치를 서로 바꾼다. 하지만 이 결과값이 0보다 작다면 즉 음수이면, 두 요소는 현재의 위치를 그대로 유지한다.

위의 코드에서 a.name < b.name 이면 -1을 반환하여 이때 a, b 요소는 위치가 바뀌지 않지만, a.name > b.name 이면 1을 반환하여 이때 a, b 요소는 위치가 서로 바뀐다.

이 조건식을 통해 name 값이 작은 요소들이 앞쪽에 정렬된다는 것을 알 수 있다.

학생 이름을 내림차순으로 정렬

 

const student = [ 
  {name : "Ron", age : 26}, 
  {name : "Nizel", age : 25}, 
  {name : "Danny", age : 19}, 
  {name : "Chris", age : 20}, 
  {name : "David", age : 26}, 
  {name : "Dan", age : 21} 
]; 
  
student.sort((a, b) => { 
  return a.name > b.name ? -1 : a.name < b.name ? 1 : 0; 
}); 

console.log(student);

 

위의 코드에서 a.name > b.name 이면 -1을 반환하여 이때 a, b 요소는 위치가 바뀌지 않지만, a.name < b.name 이면 1을 반환하여 이때 a, b 요소는 위치가 서로 바뀐다.

이 조건식을 통해 name 값이 큰 요소들이 앞쪽에 정렬된다는 것을 알 수 있다.

학생 나이를 오름차순으로 정렬

 

const student = [ 
  {name : "Ron", age : 26}, 
  {name : "Nizel", age : 25}, 
  {name : "Danny", age : 19}, 
  {name : "Chris", age : 20}, 
  {name : "David", age : 26}, 
  {name : "Dan", age : 21} 
]; 

student.sort((a, b) => { 
  return a.age < b.age ? -1 : a.age > b.age ? 1 : 0; 
}); 

console.log(student);

 

위의 코드에서 a.age < b.age 이면 -1을 반환하여 이때 a, b 요소는 위치가 바뀌지 않지만, a.age > b.age 이면 1을 반환하여 이때 a, b 요소는 위치가 서로 바뀐다.

이 조건식을 통해 age 값이 작은 요소들이 앞쪽에 정렬된다는 것을 알 수 있다.

학생 나이를 내림차순으로 정렬

 

const student = [ 
  {name : "Ron", age : 26}, 
  {name : "Nizel", age : 25}, 
  {name : "Danny", age : 19}, 
  {name : "Chris", age : 20}, 
  {name : "David", age : 26}, 
  {name : "Dan", age : 21} ]; 

student.sort((a, b) => { 
  return a.age > b.age ? -1 : a.age < b.age ? 1 : 0; 
}); 

console.log(student);

 

위의 코드에서 a.age > b.age 이면 -1을 반환하여 이때 a, b 요소는 위치가 바뀌지 않지만, a.age < b.age 이면 1을 반환하여 이때 a, b 요소는 위치가 서로 바뀐다.

이 조건식을 통해 age 값이 큰 요소들이 앞쪽에 정렬된다는 것을 알 수 있다.

'프로그래밍 언어 > JavaScript' 카테고리의 다른 글

Generator  (0) 2020.11.23
JavaScript와 Iterator  (0) 2020.11.23
Node와 Element  (0) 2020.11.22
DOM, CSSOM, BOM은 무엇일가?  (0) 2020.11.22
자바스크립트 모듈(Module)  (0) 2020.11.21
'프로그래밍 언어/JavaScript' 카테고리의 다른 글
  • JavaScript와 Iterator
  • Node와 Element
  • DOM, CSSOM, BOM은 무엇일가?
  • 자바스크립트 모듈(Module)
rondeveloper
rondeveloper
  • rondeveloper
    Ron's learning record
    rondeveloper
  • 전체
    오늘
    어제
    • 분류 전체보기 (102)
      • k8s (2)
      • AWS (1)
      • 리눅스 (5)
      • Docker (8)
      • 라이브러리 & 프레임워크 (14)
        • React (2)
        • NestJS (8)
        • Spring (0)
        • Django (3)
        • FastAPI (1)
      • 웹 (2)
        • Nginx (1)
      • 프로그래밍 언어 (29)
        • HTML (0)
        • CSS (0)
        • JavaScript (21)
        • Python (3)
        • Node.js (0)
        • TypeScript (4)
        • Java (1)
      • Today I learned (9)
      • 알고리즘 (9)
        • 백준 (0)
        • 프로그래머스 (8)
        • 개념 (1)
      • 티끌모아 태산 (5)
        • 하루에 영단어 하나씩 (5)
        • 독서 (0)
      • 시행착오 (3)
      • 데이터베이스 (2)
        • MySQL (0)
      • 컴퓨터 과학 (8)
        • 네트워크 (2)
        • 운영체제 (0)
        • 데이터베이스 (2)
        • 자료구조 (4)
      • 포트폴리오 (4)
        • JJINCAFE IN SEOUL (4)
        • CODEUNICORN (0)
      • 회고 (0)
      • CICD (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Docker
    네트워크
    Til
    코딩테스트
    FastAPI
    typeorm
    리눅스
    IP 주소
    컨테이너
    nestjs
    레벨2
    mysql
    기초
    javascript
    redis
    typescript
    도커
    스택
    프로그래머스
    반복문
    iterable
    Python
    Kubernetes
    조인
    Kubectl
    자바스크립트
    배열
    django
    모듈
    생활코딩
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
rondeveloper
sort 함수를 이용한 정렬
상단으로

티스토리툴바