sort 메소드
sort 메소드는 배열을 정렬한다.
알파벳 순서로 정렬하고 숫자의 경우 묵시적으로 문자열로 형변환 하기 때문에 숫자 1이 숫자 10보다 먼저 나온다(예제 참고)
문법(Syntax) / 인자(Parameters), 반환값(Return)
array.sort(sortfunc);
인자명 |
데이터형 |
필수/옵션 |
반환값(return) | 내용 |
sortFunc |
function |
옵션 |
정렬된 배열, 자기자신에 대한 레퍼런스 값 | 원소들 간에 무엇이 우선인지를 판단한다 |
var numbers = [9,8,7,6,5,4,3,2,1];
console.log(numbers.sort()); // array, [1,2,3,4,5,6,7,8,9]
console.log(numbers); // array, [1,2,3,4,5,6,7,8,9], 원본을 변경한다.
console.log(numbers.sort() === numbers); // boolean, true, 원본과 반환값이 같다.
var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];
//array, [1,10,2,20,3,4,5,6,7,8,9], 암시적으로 원소를 문자로 형변환 하기 때문에 10이 1뒤에 온다.
console.log(numbers.sort());
function sortNumber(a,b){
// 비교 대상인 a와 b가 인자로 전달된다.
//console.log('a :'+a+', b:'+b);
// a에서 b를 뺀 결과가 음수면 a가 b보다 작고, 0이면 같다.
// sort메소드는 return 값이 음수,양수,0인지에 따라서 순서를 정한다.
if( a > b) {
return 1; // 양수 반환
} else if (a < b) {
return -1; // 음수 반환
} else {
return 0;
}
}
// 위의 코드를 리팩토링하면 다음과 같다.
function sortNumber(a,b){
return a-b;
}
var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];
console.log(numbers.sort(sortNumber)); // array, [1,2,3,4,5,6,7,8,9,10,20]
function sortNumber(a,b){
// 위의 예제와 비교해서 a와 b의 순서를 바꾸면 정렬순서가 반대가 된다.
return b-a;
}
var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];
console.log(numbers.sort(sortNumber)); // array, [20,10,9,8,7,6,5,4,3,2,1]
Jaehee's WebClub
'JavaScript > 연산자ㆍ메서드ㆍ프로퍼티' 카테고리의 다른 글
틸트(~) 연산자와 물결물결(~~) 연산자 (0) | 2016.09.29 |
---|---|
배열 메서드 join() (0) | 2016.09.29 |
Array.splice 메서드 (0) | 2016.09.29 |
Array.slice() - slice 메소드 (0) | 2016.09.29 |
Array 객체와 String 객체의 slice 메소드 (0) | 2016.09.29 |