인프런 커뮤니티 질문&답변

강태민님의 프로필 이미지
강태민

작성한 질문수

자바스크립트 제대로 배워볼래?

Array 내장 함수

왜 오름차순으로 정렬되는지 궁금합니다.

작성

·

194

0

var point = [40, 100, 70, 21, 99];
      console.log(point.sort()); // 숫자인 경우 문자로 인식한다. 문자열로 인식하면 100이 먼저임 1이기때문에

point.sort(function(a,b){
return a-b
      });
 
안녕하세요 왜 리턴 a-b 했을때 순서대로 정렬되는지 메커니즘이 궁금합니다.
 
 
 

답변 1

1

개발자의 품격님의 프로필 이미지
개발자의 품격
지식공유자

sort()에 인수로 함수 function(a, b){return a - b}를 전달 했습니다. 이 함수를 통해서 정렬이 되는 과정은 다음과 같습니다.

  1. points의 첫번째와 두번째 요소를 비교합니다. 40 - 100 = -60  이므로 음수입니다. 결과가 음수이므로 두 요소의 위치를 바꾸지 않습니다. [40, 100, 70, 21, 99]

  2. 두번째와 세번째 요소를 비교합니다. 100 - 70 = 30 이므로 양수입니다. 두 요소의 위치를 바꿉니다. [40, 70, 100, 21, 99]

  3. 세번째와 네번째 요소를 비교합니다. 100 - 21 = 79 이므로 양수입니다. 두 요소의 위치를 바꿉니다. [40, 70, 21, 100, 99]

  4. 네번째와 다섯번째 요소를 비교합니다. 100 - 99 = 1 이므로 양수입니다. 두 요소의 위치를 바꿉니다. [40, 70, 5, 21, 99, 100]

  5. 1번에서 4번 과정을 반복적으로 수행하면서 더 이상 요소간의 위치 변경이 없을 때 까지 진행합니다.

최종 적으로 [21, 40, 70, 99, 100] 결과를 얻게 됩니다.

강태민님의 프로필 이미지
강태민

작성한 질문수

질문하기