본문 바로가기
Javascript

JS Array.prototype.sort()

by SeanK 2021. 11. 5.

 

 

 

오늘 문제를 푸는 와중에 객체로 이루어진 배열을 크기에 따라 배열로 나열해야하는 작업이 필요했다. 

 

if 문을 남발하면 뭔가 될 것 같기도 했지만...

 

이제는 코딩을 시작한지도 좀 되었으니 더 깔끔한 방법이 있을까 찾아보니 Array.prototype.sort()라는 메소드가 있었다. 

 

오늘은 sort메소드에 대해 알아보자. 

 

 

사실 이전에 몇번 sort 메소드를 사용해 본적은 있었다. 

 

const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();

 

위와 같이 배열을 sort하면 알아서 크기에 맞춰서 배열의 순서가 바뀐다. 

 

객체로 이루어진 배열의 크기를 비교할 때는 sort안에 argument값을 아래와 같이 넣어주면 된다. 

 

var items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 },
  { name: 'And', value: 45 },
  { name: 'The', value: -12 },
  { name: 'Magnetic', value: 13 },
  { name: 'Zeros', value: 37 }
];

// sort by value
items.sort(function (a, b) {
  return a.value - b.value;
});

 

처음 위 코드를 볼 때는 이게 뭐지? 싶었는데 아래 표를 참고하면 이해가 쉽다. 

 

> 0 sort b before a
< 0 sort a before b
=== 0 keep original order of a and b

 

sort 메소드는 argument가 음수, 양수, 0일 경우 각각 다르게 배열의 순서를 바꾼다. 

 

argument가 음수일 경우 크기가 큰 b를 크기가 작은 a의 뒤에 배치하고 양수일 때는 반대를 반복하며, 

 

결국 오름차순으로 배열을 정리하게 된다. 

 

 

 

'Javascript' 카테고리의 다른 글

JS Recursion memory leak  (0) 2021.11.10
JS this 바인딩  (0) 2021.11.08
JS Import  (0) 2021.11.01
JS Async vs Defer  (0) 2021.10.27
JS Regular Expressions  (0) 2021.10.26