sort()를 했는데 맘처럼 안될때가 있다. 왜그럴까?
JS는 sort()를 하는순간 정렬하고자 하는 아이템을 모두 문자로 바꾸고 숫자의 크기가 아닌 첫 캐릭터들을 비교하여 줄을 세우기 때문이다.
아래 예시를 보면, 2 다음에 3이 아닌 24가 오는것을 볼 수 있다.
let array = [3, 455, 2, 24, 56];
array.sort();
console.log(array);
해결방법
이는 a,b의 값을 비교해주어 negative값이 나오면 a를 왼쪽으로 정렬시키고 positive값이 나오면 a를 오른쪽으로 보내는 일련의 식을 통해 해결해줄 수 있다.
function sortNumbers(a, b) {
if (a > b) {
return 1;
} else if (b > a) {
return -1;
} else {
return 0;
}
}
이를 간단하게 써주면 아래와 같이 된다.
let array = [3, 455, 2, 24, 56];
array.sort((a, b) => a - b);
console.log(array);
JavaScript sort() not working
JavaScript has a sort() method that you can use on arrays, but the results are almost always weird and don’t return what you initially expect. For example, if you have the following [9, 8, 12, 1, 33, 21] array, using sort() on it will return [1, 12, 21,
www.dottedsquirrel.com
'Front-End Developer > JavaScript' 카테고리의 다른 글
이벤트를 딱 한번만 일어나게 하고싶을 때 - 자바스크립트 DOM 꿀팁 (0) | 2022.07.17 |
---|---|
Promise/fetch 텍스트파일에 있는 텍스트는 어떻게 가져올건데? (2) | 2022.06.23 |
JS로 생성한 요소 for문으로 HTML에 붙여주기 (0) | 2022.05.31 |
for 반복문으로 코드 n배 절약해보기 + 이벤트버블링 (0) | 2022.05.28 |
(JS기초)변수의 할당, 선언, 범위 (0) | 2022.05.22 |