javaScript의 sort()함수
2022년 06월30일
1. 문자열 정렬
기본적으로 js의 sort 함수는 각 문자열의 첫번째 자리부터 유니코드를 비교해서 정렬을해줍니다
var numbers = [1, 10, 2, 20, 3, 30];
numbers.sort();
console.log(numbers); // [1,10,2,20,3,30]
정렬 순서를 1, 2, 3, 10, 20, 30으로 예상을 했지만, 문자열을 비교하므로 1, 10, 2, 20, 3, 30 순서로 정렬이 됩니다. 문자열 10과 문자열 2를 비교할 때, "1" < "2" 이므로 10이 2보다 앞에 존재합니다
2. 정수값 정렬
정수값으로 정렬을 할때는 sort(compare함수)를 사용해야 합니다
var numbers = [1, 10, 2, 20, 3, 30];
numbers.sort(function compare(a, b) {
return a - b;
});
console.log(numbers); // [1,2,3,10,20,30]
return 값이 음수가 되면 a가 b앞으로 정렬되고 양수일경우 b가 앞으로 정렬되고 0일경우 그대로 배열을 반환합니다
3. 정렬 메커니즘
평소에 알고있던 python의 정렬과 매우 달라서 당황을 했습니다. 그래서 여러번 실험결과 기본적으로 a와 b가 순서가 반대라는 것을 발견했습니다.
var a = [ 'a', 'b', 'c', 'd', 'e', 'f' ];
strings.sort((a,b) => console.log(a,b));
위의 코드를 실행 시키면
b a index: 2 1
c b index: 3 2
d c index: 4 3
e d index: 5 4
f e index: 6 5
순으로 실행이 됩니다 두번째 숫자부터 끝까지 바로 앞의 숫자를 비교하는 것이죠.