sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다. 정렬 속도와 복잡도는 각 구현방식에 따라 다를 수 있습니다.
1
2
3
4
5
6
7
8
9
10
|
var alphabet = ['Za', 'Jan', 'Oeb', 'Dec'];
alphabet.sort();
console.log(alphabet);
// expected output: Array ["Dec", "Jan", "Oeb", "Za"]
var array1 = [1, 30, 4, 2100];
array1.sort();
console.log(array1);
// expected output: Array [1, 2100, 30, 4]
|
cs |
sort는 길이가 아니라 alphabet 정렬 순, 숫자는 맨 앞 숫자부터 크기가 작은 순으로 비교하여 정렬된다.
return 정렬한 배열. 원 배열이 정렬되는 것에 유의하세요. 복사본이 만들어지는 것이 아닙니다.
arrayobj.sort(sortFunction)
arrayobj는 임의의 Array 개체이다. sortFunction는 요소 순서를 결정하는 데 사용되는 함수의 이름이다.
생략하면 오름차순, ASCII 문자 순서로 정렬된다.
sortFunction 인수에 함수를 지정하면 아래의 값 중 하나가 반환된다.
· 첫 번째 인수가 두 번째 인수보다 작을 경우 - 값
· 두 인수가 같을 경우 0
· 첫 번째 인수가 두 번째 인수보다 클 경우 + 값
문자 정렬
1
2
3
4
|
var fruit = ['orange', 'apple', 'banana'];
/* 일반적인 방법 */
fruit.sort(); // apple, banana, orange
|
cs |
숫자 정렬
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
var score = [4, 11, 2, 10, 3, 1];
/* 오류 */
score.sort(); // 1, 10, 11, 2, 3, 4
// ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음
/* 정상 동작 */
score.sort(function(a, b) { // 오름차순
return a - b;
// 1, 2, 3, 4, 10, 11
});
score.sort(function(a, b) { // 내림차순
return b - a;
// 11, 10, 4, 3, 2, 1
});
|
cs |
Object 정렬
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
var student = [
{ name : "재석", age : 21},
{ name : "광희", age : 25},
{ name : "형돈", age : 13},
{ name : "명수", age : 44}
]
/* 이름순으로 정렬 */
student.sort(function(a, b) { // 오름차순
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
// 광희, 명수, 재석, 형돈
});
student.sort(function(a, b) { // 내림차순
return a.name > b.name ? -1 : a.name < b.name ? 1 : 0;
// 형돈, 재석, 명수, 광희
});
/* 나이순으로 정렬 */
var sortingField = "age";
student.sort(function(a, b) { // 오름차순
return a[sortingField] - b[sortingField];
// 13, 21, 25, 44
});
student.sort(function(a, b) { // 내림차순
return b[sortingField] - a[sortingField];
// 44, 25, 21, 13
});
|
cs |
ps. 정렬할 Array의 요소의 개수가 2개 미만일 경우 ‘sort is not a function’ 오류가 난다. [2015-11-30 추가]
관련예제
function offLineMinimum(strArr) {
var arr = [];
var result = [];
for(var i = 0; i < strArr.length; i++) {
if(strArr[i] === 'E') {
arr.sort(function(a,b) {
return a - b;
});
result.push(arr[0]);
arr.shift();
} else {
arr.push(Number(strArr[i]));
}
}
return result;
}
offLineMinimum(["1","2","E","E","3"]); // => '1,2'
offLineMinimum(["4","E","1","E","2","E","3","E"]); // => '4,1,2,3'
offLineMinimum(["5","4","6","E","1","7","E","E","3","2"]); // => 4,1,5
E가 나오기전까지 값 중에서 최솟값을 구하고 E 가 나온 수 만큼 최솟값을 구한다.
한번 나온 최솟값은 제외.
'Programing > JavaScript' 카테고리의 다른 글
[JavaScript] 객체(Object) // 속성(Property) // key값 ? (0) | 2019.01.27 |
---|---|
[JavaScript] Object Length 구하기 (0) | 2019.01.26 |
[JavaScript] 최댓값/최솟값 구하기 (2) | 2019.01.25 |
[JavaScript] 생성자와 new // + this 조금 // 객체 (0) | 2019.01.25 |
Array.prototype.unshift() // 배열의 맨앞에 요소추가 (0) | 2019.01.24 |