[자바스크립트] sort()

미음제

·

2022. 2. 18. 19:32

sort()

 

배열의 요소를 적절한 위치에 정렬한 후 그 개별을 반환해준다. sort 함수는 원본 배열을 바꾼다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따라 정렬된다.

 

const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
// expected output: Array ["Dec", "Feb", "Jan", "March"]

const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
// expected output: Array [1, 100000, 21, 30, 4]

 

1번 예시

month 배열의 원소를 아스키코드 표에 따라 오름차순으로 정렬된다.

 

2번 예시

오름차순으로 정렬한다고 생각하면, [1, 4, 21, 30, 100000]으로 생각되지만, 매개 변수가 없는 경우 아스키코드 표의 값에 따라 정렬된다.

 

구문

 

arr.sort([compareFunction])

 

sort 함수의 매개변수는 정렬 순서를 정의하는 함수이다. 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 아스키코드 표의 값에 따라 정렬된다.

 

sort 함수는 정렬한 배열을 반환하는데, 복사본이 만들어지는 것이 아니라 사용된 원래 배열이 정렬된다. 

 

매개변수로 compareFunction이 제공되면 배열 요소는 compareFunction의 반환 값에 따라 정렬된다. 만약 a, b가 비교되는 두 요소라는 다음 조건에 의해 정렬된다.

 

compareFunction(a, b)

1. a - b < 0인 경우 : a, b 순서로 정렬 (오름차순)

2. a - b = 0인 경우 : a, b를 서로에 대해 변경하지 않고 모든 다른 요소에 의해 정렬

3. a - b > 0인 경우 : b, a 순서로 정렬 (내림차순)

 

function compare(a, b) {
  if (a is less than b by some ordering criterion) {
    return -1;
  }
  if (a is greater than b by the ordering criterion) {
    return 1;
  }
  // a must be equal to b
  return 0;
}

 

2차원 행렬의 sort

 

let arr = [[6, 6], [2, 2], [4, 3], [4, 5], [10, 3]];

let tmp1 = arr.sort((a,b) => (a[0]+a[1]) - (b[0]+b[1]));
// 오름차순으로 정렬

let tmp2 = arr.sort((a,b) => (b[0]+[b1]) - (a[0]+a[1]));
// 내림차순으로 정렬

let tmp3 = arr.sort((a,b) => {
    if(a[0]===b[0]) return a[1] - b[1]
    else return a[0] - b[0]
});
// [2, 2], [4, 3], [4, 5], [6, 6], [10, 3]
반응형