sort()
함수가 있다. 보통 문자에다 이 함수를 쓰면 알파벳 순으로 정렬을 해 줄 것이고, 숫자에다 쓰면 123의 순서대로 정렬을 해 줄 것이다. (적어도 첫 언어를 python으로 시작한 나한테는 그렇다.) 그런데 자바스크립트에서 sort는 문자정렬이다.
기본기가 부족하다는 건 예전부터 알고 있었는데 이런 것도 모르고 개발을 했다니 충격이긴 하다. 이게 반드시 문자정렬인 자바스크립트한테도 충격이고. 혹시나했는데 역시나구나.
문자 정렬을 했을 때의 모습이다. 당연하게 첫머리 글자 순서대로 정렬해준다.
만약 숫자를 정렬하려고 한다면? 문자처럼 정렬이 된다.
만약 내가 숫자를 숫자답게 정렬하고 싶다면 어떻게 해야할까? 바로 함수를 사용해야 한다! 바로 요렇게!!!! 만약 reverse()를 사용하고 싶다면 numbers.sort(function(a, b){return b-a}) 요렇게 사용해주면 된다. ES6 들어가면서 뭔가 바뀌었을지도 모른다...
정리
문자정렬
var words = ['채원', '혜원' '원영', '나코']
console.log(words.sort()) // 오름차순 정렬
console.log(words.reverse()) // 내림차순 정렬
숫자정렬
var numbers = [111, 22, 3333, 444]
console.log(numbers.sort(function(a, b){return a-b})) // 오름차순 정렬
console.log(numbers.sort(function(a, b){return b-a})) // 내림차순 정렬
Object 정렬
var object = {
name:'banana', price:3000
name:'apple', price:39900
name:'coconut', price:2000
}
console.log(object.sort(function(a, b) {
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
});) // 오름차순 정렬
console.log(object.sort(function(a, b) {
return a.name > b.name ? -1 : a.name > b.name ? 1 : 0;
});) // 내림차순 정렬
'front-end > javascript' 카테고리의 다른 글
[javascript]자바스크립트 리스트 reverse / 기존 array에 영향을 미치지 않게 하려면? (0) | 2020.07.28 |
---|---|
[JS] MVC 패턴과 MVVM 패턴 (0) | 2020.04.26 |
[javascript] 자바스크립트 es6 map (0) | 2020.02.02 |
[javascript] 바나나 문제 / 0.1+0.2 === 0.3이 틀린 이유 (0) | 2020.01.29 |
[javascript] ES6 클래스와 Prototype / 왜 Object instanceof Function은 true인가 (4) | 2019.11.09 |
댓글