본문 바로가기

개념/javaScript

[javaScript] arr.sort() 배열 정렬하기

💡 sort() 소개

 

🔹역할: 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환한다.

 

🔹생김새: arr.sort([비교함수])

 

🔹특징:

  • 비교함수를 인수로 전달하지 않으면 요소는 문자열로 취급되어 재정렬된다.*
  • 배열 자체를 변경(mutable)한다. 
  • 재정렬된 배열을 반환하긴 하지만, mutable이기 때문에 원본 arr를 주로 사용한다.

 

*기본 정렬 예시를 보려면 아래를 클릭하세요

더보기

유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.

각각의 문자에 해당하는 숫자값이 정해져있는데, 비교함수를 지정하지 않으면 그 숫자값에 따라서 오ㅡㄹㅁ차순으로 정렬된다.

const arr = [1,10,12,13,2,21,22,23,30,4,1000,-1,-10,-12,-13,-2,-21,-22,-23,-30,-4,-1000]
arr.sort()
//[ -1, -10, -1000, -12, -13, -2, -21, -22, -23, -30, -4, 1, 10, 1000, 12, 13, 2, 21, 22, 23, 30, 4 ]

const arr1 = ['a','aa','ab','abb','acc','ac','ba','!b','bcc','c','!','?']
arr1.sort()
//[ '!', '!b', '?', 'a', 'aa', 'ab', 'abb', 'ac', 'acc', 'ba', 'bcc', 'c' ]

const arr2 = ['가','나','가나','다','라','다리미','다람쥐','거','녀','!!','?']
arr2.sort()
//[ '!!', '?', '가', '가나', '거', '나', '녀', '다', '다람쥐', '다리미', '라' ]

 


🖋 비교함수 작성하기

sort()의 알고리즘이 비교함수를 사용해서 최적의 효율로 정렬해준다.

 

 

🔹필요성: 주로 숫자를 숫자로 비교해서 오름차순으로 정렬해야 할 때 가장 많이 쓰인다.

 

🔹조건:  반드시 값 두 개를 비교해야 하고 반환 값으로 숫자(음수||양수||0)를 리턴해야한다.

 

🔹기본 형태:

 

function compare(a, b) {
  if (a > b) return 1; // 첫 번째 값이 두 번째 값보다 큰 경우
  if (a == b) return 0; // 두 값이 같은 경우
  if (a < b) return -1; //  첫 번째 값이 두 번째 값보다 작은 경우
}

arr.sort(compare)

 

🔹단순 형태(보편적):

 

arr.sort( (a, b) => a - b );

 

 

🛑 예시: (이거만 기억하자!!)

let arr = [1, -2, 15, 2, 0, 8]
arr.sort((a,b) => a - b)
//[ -2, 0, 1, 2, 8, 15 ]

 

let items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 },
  { name: 'And', value: 45 },
  { name: 'The', value: -12 },
  { name: 'Magnetic', value: 13 },
  { name: 'Zeros', value: 37 }
];

items.sort((a,b) => a.value - b.value)