Javascript Array.sort() 정렬

고광필·2022년 1월 20일
0

알고리즘

목록 보기
2/12

백준에서 자바스크립트로 최소값, 최대값 문제 풀다가 Math.min하고 Math.max를 썼습니다.
이게 stack error가 나게 되어서 정렬을 해서 첫값과 끝값을 사용하려고 했는데 막상 js에서 정렬을 할줄 몰라 공부하게되었습니다.

Array.sort(compareFunction)

기본적인 사용

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

profile
이해하는 개발자를 희망하는 고광필입니다.

0개의 댓글