차곡차곡

[JavaScript] 배열 정렬 본문

Language/JavaScript

[JavaScript] 배열 정렬

sohy 2023. 5. 13. 11:06

sort() 함수의 기본적 특징

- 기본적으로 오름차순 정렬한다.

- 요소를 문자열로 캐스팅하고 변환된 문자열을 비교하여 순서를 결정한다.

- 요소가 undefined인 경우, 문자열로 변환되지 않고 배열의 맨끝으로 정렬된다.

var numbers = [1, 10, 2, 20, 3, 30];
numbers.sort();

console.log(numbers); // [1,10,2,20,3,30]

문자열 10과 문자열 2를 비교했을 때, '1' < '2' 이므로 10이 2보다 앞에 정렬된다.

 

위 문제를 해결하기 위해선, sort 함수에 비교 함수를 파라미터에 넣어줘야 한다.

array.sort(compareFunction)

 

비교 함수(compareFunction)

1. 숫자 오름차순 정렬

var numbers = [1, 10, 2, 20, 3, 30];
numbers.sort(function compare(a, b) {
  return a - b;
});

console.log(numbers); // [1,2,3,10,20,30]
// 간단하게
var numbers = [1, 10, 2, 20, 3, 30];
numbers.sort((a, b) => a - b)

console.log(numbers); // [1,2,3,10,20,30]

 

2. 숫자 내림차순 정렬

var numbers = [1, 10, 2, 20, 3, 30];
numbers.sort(function compare(a, b) {
  return b - a;
});

console.log(numbers); // [30,20,10,3,2,1]
// 간단하게
var numbers = [1, 10, 2, 20, 3, 30];
numbers.sort((a, b) => b - a);

console.log(numbers); // [30,20,10,3,2,1]

 

3. 문자열 오름차순 정렬

var strArray = ["BA", "BB","AA", "AB", "CB", "CA"];
strArray.sort();

console.log(strArray); // ["AA","AB","BA","BB","CA","CB"]

 

4. 문자열 내림차순 정렬

var strArray = ["BA", "BB","AA", "AB", "CB", "CA"];
strArray.sort(function compare(a, b) {
  return a == b ? 0 : a > b ? -1 : 1;
});

console.log(strArray); // ["CB","CA","BB","BA","AB","AA"]
// 간단하게
var strArray = ["BA", "BB","AA", "AB", "CB", "CA"];
strArray.sort((a, b) => a == b ? 0 : a > b ? -1 : 1);

console.log(strArray); // ["CB","CA","BB","BA","AB","AA"]

+ 대문자, 소문자 섞여있을 경우

var strArray = ["bA", "Bb","aa", "Ab", "cB", "ca"];
strArray.sort(function compare(a, b) {
  let x = a.toUpperCase(),
      y = b.toUpperCase();
  return x == y ? 0 : x > y ? -1 : 1;
});

console.log(strArray); // ["cB","ca","Bb","bA","Ab","aa"]

 


 

참고

 

[JavaScript]배열 정렬 sort()

JavaScript에서 배열의 요소들을 정렬하기 위해 sort() 메서드를 사용합니다. sort() 메서드를 사용하면 배열의 요소를 오름차순 또는 내림차순으로 정렬할 수 있으며, 기존 배열의 요소들을 정렬합니

developer-talk.tistory.com

 

Comments