본문 바로가기
front-end/javascript

[javascript] 자바스크립트의 sort( )는 문자정렬이구나... (문자, 숫자 ,Object 정렬법)

by MOOB 2020. 4. 21.

출처 : @programmer_pic

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;
});) // 내림차순 정렬

댓글