'정렬'에 해당되는 글 1건

  1. 2015.12.18 [javascript] (Array.sort) 자바스크립트 배열의 정렬
 var m = [11, 1, 3];
 console.log(m);

 Array.sort(m);
 console.log(m);

 m.sort(function (a,b) {return a-b; });
 console.log(m);

결과값을 추측해 보라. 과연 어떤값이 나올까?



당신이 예상한 값과 같은가?


위 구문에서 알수 있는것 두가지가 있다.


1. sort 를 하면 변수 자체의 값이 변경된다. (별도로 변수에 설정할 필요가 없다. ex. m = Array.sort(m); )

2. sort 는 문자열 기반으로 정렬된다.


결과의 두번째 줄 [1, 11, 3] 가 문자열을 기반으로 정렬이 된 결과다.


다시한번 생각해 보자.


var m = ["11", "1", "3"];


주로 받아온값을 split 등으로 배열로 만들어 쓰므로 저런 형태의 자료를 더 자주 접할것이다. 위와 같이 배열을 설정하면 과연 결과가 어떻게 될까?

a-b 에서 오류가 나지는 않을까?


["11", "1", "3"]

["1", "11", "3"]

["1", "3", "11"]


에러는 나지 않으며 종전과 같은 결과를 출력한다. Array.sort는 원래 문자열기반정렬이므로 결과가 같고, 마지막 문장도 이는 자바스크립트가 자동형변환을 해 주므로 같은 결과가 나오게 된다.


참고로 문자열(String)의 배열을 숫자형(Numeric) 배열로 변환하고 싶다면 다음과 같이 변환 할 수 있다.


var m = ["11", "1", "3"].map(function (el) {

    return parseInt(el, 10);

    // 또는 return Number(el);

});



Posted by KENSIN
,