반응형
오늘은 배열의 내장 함수 중 sort()에 대해서 알아보았다.
sort() 함수를 이용해 배열의 요소들을 쉽게 정렬할 수 있는데 , 기본으로는 오름차순으로 정렬해준다.
또한 sort()함수의 인자로 function을 넣어주면 원하는 형태로 정렬이 가능하다.
let array = [1, 4, 2, 5, 3, 6, 7];
array.sort(); // [1, 2, 3, 4, 5, 6, 7];
function compareReverse(a, b){
return b - a; // b - a 값이 양수인지 판별하여 b를 a보다 낮은 색인으로 정렬 (내림차순 정렬)
// return a -b; -> a-b값이 음수인지 판별하여 a를 b보다 낮은 색인으로 정렬 (오름차순 정렬)
// 만약 a === b 이면 a - b의 값이 0이 되므로 변경을 진행하지 않고 다음 요소를 정렬
};
array.sort(compareReverse); // [7, 6, 5, 4, 3, 2, 1];
/*
MDN 참조 compare함수
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
*/
// 비교함수는 클로저를 사용해 편리하게 사용이 가능하다.
array.sort(a, b => a - b); // 다시 오름차순으로 정렬 -> [1, 2, 3, 4, 5, 6, 7]
또한 배열뿐만 아니라 객체의 속성들을 기준으로 정렬도 가능하다.
let users = [
{ name: 'Leo', age: 25 },
{ name: 'Michael', age: 17 },
{ name: 'Anddy', age: 25 },
{ name: 'Dobbin', age: 3 },
{ name: 'Megan', age: 89 },
{ name: 'Nic', age: 5 }
];
// 오름차순 정렬
users.sort(function(a, b){
if(a.age > b.age){
return 1;
}
if(a.age < b.age){
return -1;
}
if(a.age === b.age){
return 0;
}
});
console.log(users);
/*
0: {name: "Dobbin", age: 3}
1: {name: "Nic", age: 5}
2: {name: "Michael", age: 17}
3: {name: "Leo", age: 25}
4: {name: "Anddy", age: 25}
5: {name: "Megan", age: 89}
*/
그리고 sort를 사용하면 정렬된 새로운 배열이 반환되는 것이 아니라 원배열이 정렬되는 것이니 이 점에 유의해야 한다.
반응형
'JavaScript 기초' 카테고리의 다른 글
[JavaScript] element.childNodes, element.children, Node.contain (0) | 2020.10.05 |
---|---|
[JavaScript] apply(), call(), bind()와 this 키워드 (0) | 2020.10.01 |
[JavaScript] 배열의 기초 2 - 배열의 내장함수들과 내장 고차 함수 (0) | 2020.09.26 |
[JavaScript] prototype 프로토타입에 대하여 (0) | 2020.09.24 |
[JavaScript] String.prototype.repeat() 문자열 반복 함수 (2) | 2020.09.17 |
댓글