배열 정렬하기 sort()

arr.sort()


문자 정렬

배열내부 요소들을 정렬하는 방법을 알아봅니다. 한글이나 영문의 경우에는 arr.sort()를 하면 쉽게 정렬이 됩니다.

const str77 = ['b','ae','x','qrs']; const str88 = ['콩','가나','멕시코','라라']; str77.sort(); //["ae", "b", "qrs", "x"] str88.sort(); //["가나", "라라", "멕시코", "콩"]
Code language: JavaScript (javascript)

숫자 정렬

하지만 숫자는 위와 같은 방식으로는 정렬이 되지 않습니다. 왜냐하면 sort는 기본적으로 모든 값을 문자열로 바꿔서 사전순으로 비교하기 때문이다.

아래 코드를 보면 우리가 원했던 결과가 아닙니다.

const arrNum = [37, 3, 27, 7, 152, 23, 35]; arrNum.sort(); console.log(arrNum); // [152, 23, 27, 3, 35, 37, 7]
Code language: JavaScript (javascript)

그래서 아래와 같이 sort()의 괄호 안에 함수를 넣어주는 방법을 사용한다.

const arrNum = [37, 3, 27, 7, 152, 23, 35]; arrNum.sort(function(p,c){return p-c;}); console.log(arrNum); //[3, 7, 23, 27, 35, 37, 152]
Code language: JavaScript (javascript)
//화살표 함수를 사용해도 된다. const arrNum = [37, 3, 27, 7, 152, 23, 35]; arrNum.sort((p,c)=>p-c); console.log(arrNum); //[3, 7, 23, 27, 35, 37, 152]
Code language: JavaScript (javascript)

p-c함수는 기본 방식 대신 숫자를 크기 순으로 비교한다고 자바스크립트 해석기에게 알려주는 겁니다. 배열 안에서 두개의 숫자를 가져와서 p, c에 담고 p – c를 해서 0보다 크면 자리를 바꿔주는 그런 방식입니다.

만약 숫자를 내림차순으로 정렬하고 싶다면 p-c 대신 c-p로 바꿔쓰면 됩니다.

답글 남기기

11 − 1 =