Array.prototype.sort()

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환.

기본 정렬순서는 문자열의 유니코드 코드 포인트를 따름

 

    arr.sort([compareFunction])

compareFunction - 옵션

정렬 순서를 정의하는 함수. 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬됩니다.

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]

 

array1의 배열이 [1,100000,21,30,4]인 이유는

숫자정렬에서 100000과 21은 21이 원래 앞서지만 이 숫자들은 문자열로 변환되기때문에 100000은 21 앞입니다.

 

 

배열을 오름차순, 내림차순으로 정렬하고 싶을 때 

compareFunction(a, b)를 작성합니다. 

  • compareFunction(a, b)이 0보다 작은경우 a를 b보다 작다고 판단해 a를 b앞으로 변경합니다. 
  • compareFunction(a, b)이 0과 같은경우 a와 b가 같다고 판단합니다. 
  • compareFunction(a, b)이 0보다 큰경우 a를 b보다 크다고 판단해 b를 a앞으로 변경합니다. 

문자열을 비교할 경우

function compareFunction(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;
}

숫자를 비교할 경우 

function compareNumbers(a, b) { //오름차순
  return a - b;
}
function compareNumbers(a, b) { //내림차순
  return b - a;
}
var numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => {
  return a - b;
});
console.log(numbers);

// [1, 2, 3, 4, 5]

'언어 정리 > JavaScript' 카테고리의 다른 글

Number.isInteger()  (0) 2022.11.12
String.prototype.repeat()  (0) 2022.11.12
String.prototype.split()  (0) 2022.11.09
Array.prototype.reverse()  (0) 2022.11.09
Array.prototype.join()  (0) 2022.11.09