본문 바로가기

Programing/JavaScript

[JavaScript] Array.prototype.sort()

출처

 

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 = [13042100];
array1.sort();
console.log(array1);
// expected output: Array [1, 2100, 30, 4]
 
cs

 

sort는 길이가 아니라 alphabet 정렬 순, 숫자는 맨 앞 숫자부터 크기가 작은 순으로 비교하여 정렬된다.

 

return             정렬한 배열. 원 배열이 정렬되는 것에 유의하세요. 복사본이 만들어지는 것이 아닙니다.

 

 

 


 

출처 :: 

DUDMY HOME

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 = [41121031]; 
 
/* 오류 */
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 가 나온 수 만큼 최솟값을 구한다.

한번 나온 최솟값은 제외.