프로그래머스 문제를 풀다가 배열의 최댓값 두개를 곱하는 문제를 풀었는데,
너무 복잡하게 생각하며 한시간 넘게 끙끙 앓다가 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]
(a,b)는 a: 첫번째 인자 b: 두번째 인자 이다. arr[0]과 arr[1]이라고 생각하면 된다.
그리고 차례차례 a-b를 계산해서
*2023-04-10 추가
.sort()는 숫자의 내림/오름차순 정렬 뿐만 아니라
문자열의 가나다순, 알파벳순 등으로 정렬도 가능하다.
<예시1 - 한글일때>
let str = "안녕하세용"
[...str].sort() //['녕', '세', '안', '용', '하']
<예시2 - 영어일때>
let str = "apple"
[...str].sort() //['a', 'e', 'l', 'p', 'p']