Array.sort(콜백함수)로 내림차/오름차 순 정렬하기

백돼지·2023년 3월 13일
0
post-thumbnail

프로그래머스 문제를 풀다가 배열의 최댓값 두개를 곱하는 문제를 풀었는데,
너무 복잡하게 생각하며 한시간 넘게 끙끙 앓다가 array.sort()에 콜백함수를 넣을 수 있다는 것을 처음 알게 되었다. 비슷한 문제나 실용에 꽤 쓸모 있을것 같다.

Array.sort((a,b)=>a-b) : Array를 오름차순 정렬
Array.sort((a,b)=>b-a) : Array를 내림차순 정렬

내림차순은 [5,4,3,2,1] 처럼 큰 수 부터 작은 수로,
오름차순은 [1,2,3,4,5] 처럼 작은 수 부터 큰 수로 정렬!

let arr = [2,4,1,3,5];
let strArr = ["b","a","d","c","e"];

arr.sort((a,b)=>a-b);
strArr.sort();	//문자열도 그냥 넣어봤음 
arr;	// [1,2,3,4,5]
strArr;	// [a,b,c,d,e]

반대로 오름차순으로 정렬하고 싶다면?
  
arr.sort((a,b)=>b-a);
arr;	// [5,4,3,2,1]

sort((a,b)=>a-b)에서

(a,b)는 a: 첫번째 인자 b: 두번째 인자 이다. arr[0]과 arr[1]이라고 생각하면 된다.
그리고 차례차례 a-b를 계산해서

  • 이 값이 양수면 자리를 바꾼다.
  • 이 값이 0이면 자리를 바꾸지 않는다.
  • 이 값이 음수면 자리를 바꾸지 않는다.

*2023-04-10 추가

.sort()는 숫자의 내림/오름차순 정렬 뿐만 아니라
문자열의 가나다순, 알파벳순 등으로 정렬도 가능하다.

<예시1 - 한글일때>
let str = "안녕하세용"
[...str].sort()	//['녕', '세', '안', '용', '하']


<예시2 - 영어일때>
let str = "apple"
[...str].sort()	//['a', 'e', 'l', 'p', 'p']


profile
용호의 코딩블로그 22.11 코딩공부 시작 23.2 부트캠프 입소

0개의 댓글