sort() 함수 알아보기

sealkim·2023년 6월 13일

자바스크립트 내장 함수에는 sort()가 있다. 명칭 그대로 배열 안의 원소를 정렬하는 함수이다.

Array.sort(sortFunction)


sortFunction 인수에 함수를 지정하면 아래의 값 중 하나가 반환된다.

  • 첫 번째 인수가 두번째 인수보다 작을 경우 -값
  • 두 인수가 같을 경우 0
  • 첫 번째 인수가 두번쨰 인수보다 클 경우 +값

문자 정렬

const fruit = ['apple','mango', 'cherry']

/* 일반적인 방법 */
fruit.sort();
> ['apple', 'cherry', 'mango']

숫자 정렬

const number = [8, 20, 16, 1, 35, 27];

/* 오류 */
number.sort()
> [1, 16, 20, 27, 35, 8] // ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음

/* 정상 동작 */
number.sort(function(a, b){ // 오름차순
    return a - b;
})
> [1, 8, 16, 20, 27, 35]

number.sort(function(a, b){// 내림차순
    return b - a
})
> [35, 27, 20, 16, 8, 1]

Object 정렬

const student = [
    { name : "재석", age : 21},
    { name : "광희", age : 25},
    { name : "형돈", age : 13},
    { name : "명수", age : 44}
]

student.sort(function(a, b){ // 오름차순
    return a.name < b.name ? -1 : a.name > b.name ? 1 : 0
})
> 광희, 명수, 재석, 형돈

student.sort(function(a, b){ // 내림차순
    return a.name > b.name ? -1 : a.name < b.name ? 1 : 0
})
> 형돈, 재석, 명수, 광희

/* 나이순으로 정렬 */
student.sort(function(a, b){ // 오름차순
    return a[sortingField] -b[sortingField]
})
> 13, 21, 25, 44

student.sort(function(a, b){
    return b[sortingField] - a[sortingField]
})
> 44, 25, 21, 13

⚡️ 정렬 알고리즘

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

-1: a를 b보다 앞에 위치시킵니다. 즉, a가 b보다 작은 값으로 간주
1: a를 b보다 뒤에 위치시킵니다. 즉, a가 b보다 큰 값으로 간주
0: a와 b의 순서를 변경하지 않습니다. 즉, a와 b가 같은 순위로 간주

profile
🚀 DevLog

0개의 댓글