javascript 정렬(1)

JongIk Park·2021년 6월 13일
0

javascript

목록 보기
7/21
post-thumbnail

sort()함수에 관해 간단하게 정리했지만 코딩테스트 연습을 하면서 여러가지 정렬 알고리즘에 관한 지식이 필요할 것 같아 다시 한번 심화적으로 정리했습니다.

⛹🏼‍♂️배열 정렬하기

🏀 1. sort() 함수

arr.sort([compareFunction]);

파라미터

**compareFunction** - 이 값이 생력되면, 배열의 element들은 문자열로 취급되어, 유니코드 값 순서대로 정렬된다. - 이 함수는 두 개의 배열 element를 파라미터로 입력 받는다. - 이 함수가 a,b 두 개의 element를 파라미터로 입력받을 경우, - 리턴값이 **0보다 작을 경우**, a가 b보다 앞에 오도록 정렬. - 리턴값이 **0보다 클 경우**, b가 a보다 앞에 오도록 정렬한다. - 만약 리턴값이 0이라면 a와 b의 순서를 변경하지 않는다.

예제)

const arr1 = [2, 1, 3];
const arr2 = arr1.sort();
//
console.log(arr1); // [1,2,3]
console.log(arr2); // [1,2,3]
arr1.push(4);
console.log(arr1); // [1,2,3,4]
console.log(arr2); // [1,2,3,4]

sort() 함수는 원본배열을 정렬하고 원본 배열을 가리키는 배열을 리턴한다.

문자열을 오름차순, 내림차순 정렬 (대소문자 구분없이)

  • sort()함수는 파라미터가 입력되지 않으면, 문자열의 유니코드 순서대로 정렬하기 때문에 문자열의 오름차순 정렬에는 파라미터를 입력할 필요가 없다.
  • 문자열을 내림차순으로 정렬하기 위해서는 sort()의 파라미터 함수에서 두 문자열을 비교해야한다.
const arr = ['banana', 'b', 'Boy'];

arr.sort(function(a, b) {
  const upperCaseA = a.toUpperCase();
  const upperCaseB = b.toUpperCase();
  
  if(upperCaseA < upperCaseB) return 1; // ASCII 값을 비교한다.
  if(upperCaseA > upperCaseB) return -1;
  if(upperCaseA === upperCaseB) return 0;
});
console.log(arr[0]); // Boy,banana,b

문자열 비교하기

  • '<','>' 연산자를 사용하여 문자열의 순서를 비교할 수 있다.
  • 문자열의 ASCII 값을 비교하여 결과를 리턴해준드ㅏ.

sort() 함수로 객체 정렬하기

const arr = [
  {name: 'banana', price: 3000}, 
  {name: 'apple', price: 1000},
  {name: 'orange', price: 500}
];
arr.sort(function(a, b) {
  return a.price - b.price; // price 기준으로 오름차순 정렬한다.
});
console.log(arr[0]); // {"name":"orange","price":500}
console.log(arr[1]); // {"name":"apple","price":1000}
console.log(arr[2]); // {"name":"banana","price":3000}
profile
신입 프론트엔드 개발자

0개의 댓글