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 에서 오류가 나지는 않을까?
에러는 나지 않으며 종전과 같은 결과를 출력한다. Array.sort는 원래 문자열기반정렬이므로 결과가 같고, 마지막 문장도 이는 자바스크립트가 자동형변환을 해 주므로 같은 결과가 나오게 된다.
참고로 문자열(String)의 배열을 숫자형(Numeric) 배열로 변환하고 싶다면 다음과 같이 변환 할 수 있다.
var m = ["11", "1", "3"].map(function (el) {
return parseInt(el, 10);
// 또는 return Number(el);
});
'javascript' 카테고리의 다른 글
스크립트를 사용한 프로그램 소스 구문 강조 syntax highlighter (0) | 2015.02.03 |
---|---|
[javascript] jquery .find() 와 .children() (0) | 2014.10.15 |
[js] window.location 정보 (0) | 2013.05.13 |