개발하는 루루언니

javascript: sort. 정렬 개념잡기 본문

컴퓨터 정보/javascript

javascript: sort. 정렬 개념잡기

혜닝혜루 2023. 2. 21. 17:24
728x90
반응형

쇼핑몰 정렬을 구현하려고 하다보니 sort를 다시찾게 되었는데 문자열은 sort를 사용하면 '  가 나 다 ' 순으로 정렬이 되지만

숫자는 어떻게 될까? 검색을 해보았다.


let  ary= [ 2, 90 ,100 ] 이 있다면 어떻게 정렬될까?

당연히 그대로  2,90,100 이겠지 라고 생각하겠지만

배열안에 숫자는 " 2 " , "90","100" 문자열로 구분을 하기 때문에

앞에 숫자인 2, 9, 1 만으로 비교를 하게된다.

그럼 결과값은 100,2,90 이렇게 나오게 될것이다.

 

이걸 어떻게 해야 제대로 된 정렬이 가능할까?

ary.sort( a,b => a - b )

 

숫자를 비교하기위한 sort에 compare function 함수를 실행하게 된다.

a-b 를하고 값이 양수 ( + ) 인경우 배열의 자리를 교체하고a  -b 를하고 값이 음수 ( - ) 일경우 배열의 자리는 그대로 유지한다.

 

2 - 90 을 하면 - 88  인 음수값이 나오게 되므로 자리는 그대로 유지한다.90-100을 하면 -10 이 인 음수값이 나오므로 자리는 유지한다.

 

이렇게 계산이 된다.

 

그 반대로  값이 큰값을 기준으로 정렬을 하고 싶다면?

ary.sort( a,b => b - a )

반대로 b와 a 의 값을 변경해주면 된다. 

 

90 - 2 는 88 양수가 나오니까 자리 배치를 변경하여 90이 앞으로 가게되므로 숫자가 큰 순서대로 정렬이 된다.

728x90