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