백준에서 자바스크립트로 최소값, 최대값 문제 풀다가 Math.min하고 Math.max를 썼습니다.
이게 stack error가 나게 되어서 정렬을 해서 첫값과 끝값을 사용하려고 했는데 막상 js에서 정렬을 할줄 몰라 공부하게되었습니다.
기본적인 사용
const arr = ['B', 'butter', 'a', 'apple']
console.log(arr);
// ['B', 'butter', 'a', 'apple']
arr.sort();
// 각 문자의 유니 코드 코드 포인트 값에 따라 정렬 => 아스키 코드 값으로 오름차순 정렬
console.log(arr);
// ['B', 'a', 'apple', 'butter']
compareFunction 없이 사용하면 아스키 코드값 오름차순으로 정렬됩니다.
compareFunction은 compareFunction(a, b)와 같이 사용되며
반환값이 0보다 작은 경우 a를 b보다 낮은 색인으로 정렬합니다. => a가 먼저 옵니다.
반환값이 0보다 큰 경우, b를 a보다 낮은 인덱스로 소트합니다. => b가 먼저 옵니다.
내림차순 정렬 (1)
const arr = ['B', 'butter', 'a', 'apple']
console.log(arr);
// ['B', 'butter', 'a', 'apple']
arr.sort((a, b) => {
if (a > b) return -1
if (a < b) return 1
return 0
});
console.log(arr);
// ['butter', 'apple', 'a', 'B']
내림차순 정렬 (2)
const arr = ['B', 'butter', 'a', 'apple']
console.log(arr);
// ['B', 'butter', 'a', 'apple']
arr.sort();
console.log(arr);
// ['B', 'a', 'apple', 'butter']
arr.reverse();
console.log(arr);
// ['butter', 'apple', 'a', 'B']
숫자 정렬
const arr = [3, 5, 1, 7];
console.log(arr);
// [3, 5, 1, 7]
arr.sort();
console.log(arr);
// [1, 3, 5, 7]
arr.sort((a, b) => b - a)
console.log(arr);
// [7, 5, 3, 1]
숫자를 정렬할때는 a-b, b-a 처럼 사용이 가능하다.
참고
대소문자 구분 없는 정렬을 원할경우 sort()과정에서 toUpperCase() 도는 toLowerCase()를 이용해 대소문자 통일이 필요하다.
https://www.w3schools.com/js/js_array_sort.asp
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort