본문 바로가기
JavaScript 기초

[JavaScript] Array.prototype.sort() 배열 내장함수 - 정렬

by 개미는뚠뚠딴 2020. 10. 1.
반응형

오늘은 배열의 내장 함수 중 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를 사용하면 정렬된 새로운 배열이 반환되는 것이 아니라 원배열이 정렬되는 것이니 이 점에 유의해야 한다.

반응형

댓글