JS : Array.sort()

daymoon_·2022년 3월 12일
0

JAVASCRIPT

목록 보기
9/23
post-thumbnail

Array.sort()

🔗 참고자료
MDN Array.prototype.sort()
W3SCHOOLS JavaScript Sorting Arrays
자바스크립트의 sort( )는 문자정렬이구나...

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

기본 정렬 순서는 문자열의 유니코드 포인트를 따른다. 정렬 속도와 복잡도는 각 구현방식에 따라 다르다.


반환 값

  • 정렬한 배열
  • 즉, 원본 배열이 정렬되는 것으로 원본 배열이 손상된다. → 복사본 X

🛑 주의

  • 숫자는 사용자가 원하는 대로 정렬이 되지 않는다.
  • 매개변수 compareFuntion이 제공되지 않으면 요소를 문자열로 변환하고 유니코드 모인트 순서로 문자열을 비교하여 정렬한다.
  • 즉, 배열의 원소를 문자열로 취급하여 유니코드 값 순서대로 정렬된다.

🛑 comepareFunction
compareFunction이 제공되면 배열 요소는 compare 함수의 반환 값에 따라 정렬됩니다. a와 b가 비교되는 두 요소라면,

  • compareFunction(a, b)이 0보다 작은 경우 a를 b보다 낮은 색인으로 정렬합니다. 즉, a가 먼저옵니다.
  • compareFunction(a, b)이 0을 반환하면 a와 b를 서로에 대해 변경하지 않고 모든 다른 요소에 대해 정렬합니다.
  • compareFunction(a, b)이 0보다 큰 경우, b를 a보다 낮은 인덱스로 소트합니다.
  • compareFunction(a, b)은 요소 a와 b의 특정 쌍이 두 개의 인수로 주어질 때 항상 동일한 값을 반환해야합니다. 일치하지 않는 결과가 반환되면 정렬 순서는 정의되지 않습니다.

⚙️ 파라미터 생략

const name = ['Kate', 'John', 'Coco', 'Ada', 'Luna'];
const age = [10, 43, 9, 333, 23, 85, 12];

// name
console.log(`정렬 배열 : ${name.sort()}`);
console.log(`원본 배열 : ${name}`);

// age
console.log(`정렬 배열 : ${age.sort()}`);
console.log(`원본 배열 : ${age}`);

// 결과
// 정렬 배열 : Ada,Coco,John,Kate,Luna
// 원본 배열 : Ada,Coco,John,Kate,Luna
// 정렬 배열 : 10,12,23,333,43,85,9
// 원본 배열 : 10,12,23,333,43,85,9

⚙️ 파라미터 작성

  • 숫자 : 오름차순 정렬
const age = [10, 43, 9, 333, 23, 85, 12];

// compareFuntion
age.sort(function(a, b) {
  // 두 숫자의 차이로 오름차순 정렬
  return a - b;
});
console.log(age);

// 결과
// [9, 10,  12, 23, 43, 85, 333]

  • 숫자 : 내림차순 정렬
const age = [10, 43, 9, 333, 23, 85, 12];

// compareFuntion
age.sort(function(a, b) {
  // 두 숫자의 차이로 내림차순 정렬
  return b - a;
});
console.log(age);

// 결과
// [333, 85, 43, 23, 12, 10,  9]

🗓️ 수정 및 추가

✅ 2022.03.22

  • 주석 수정 (오타)
profile
미지의 공간🌙

0개의 댓글