작성
·
393
0
timeLine.sort((a, b) =>
a[0] == b[0] ? a[1] - b[1] : a[0] - b[0]
);
sort는 문자열을 값으로 가진 비교는 자동으로 유니코드값으로 변환되어 비교하는줄 알았는데 저렇게 하니
[ [ 5, 's' ], [ 12, 's' ],
[ 14, 's' ], [ 14, 'e' ],
[ 15, 'e' ], [ 15, 's' ],
[ 18, 'e' ], [ 20, 'e' ],
[ 20, 's' ], [ 30, 'e' ] ]
이렇게 s가 먼저 나올 때도 있고 e가 먼저 나올때도 있고 하더라구요
원래 sort 할 때 문자열은 자동으로 유니코드값으로 변환되어 비교되지 않나요?
답변 1
0
안녕하세요^^
자바스크립트 sort함수는 아무 인자도 넘기지 않았을 때 자동으로 문자열로 변환한 다음 유니코드에 의해 정렬을 해줍니다.
만약 인자(콜백함수)를 넘기면 타 언어와 달리 정확하게 문자를 아스키값으로 바꿔 그 계산값이 양수, 0, 음수로 전달되게 해주어야 합니다.