array.sort() : 배열을 오름차순 정렬
1
2
3
4
5
6
let arr = [1, 3, 5, 2, 4];
arr.sort();
console.log(arr); //[1,2,3,4,5]
arr.sort().reverse();
console.log(arr); //[5,4,3,2,1]
추가 sort()의 함정
sort()를 적용하면 문자나 숫자는 알맞게 정렬해준다. 하지만 숫자 형태의 문자 ['10','9','11']
을 sort() 하면
1
2
3
4
let arr = ["10", "9", "11"];
arr.sort();
console.log(arr); //['10','11,'9']
문자를 비교하면 앞자리의 문자 9보다 1이 작기 때문에 '10','11'
이 '9'
보다 앞으로 온다
해결방법
.sort((a, b) => a-b) : 오름차순
.sort((a, b) => b-a) : 내림차순
1
2
3
4
5
6
let arr = ["10", "9", "11"];
arr.sort((a, b) => a - b);
console.log(arr); //['9','10,'11']
arr.sort((a, b) => b - a);
console.log(arr); //['11','10,'9']
a-b 또는 b-a의 값이 양수가 나오면 배열에서 자리를 교체하고 음수가 나오면 교체하지 않는다.
참고자료 https://change-words.tistory.com/64