자바스크립트 배열 정렬에 관한 예문이 이해가 가지 않아 도움을 요청합니다.
조회수 1332회
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<button onclick="myFunction()">Try it</button>
<script>
var points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;
function myFunction() {
points.sort(function(a, b) {returns a - b});
document.getElementById("demo").innerHTML = points;
}
</script>
</body>
</html>
sort() 메서드 사용 시 문자열은 정확히 동작하지만 숫자 형태일 경우 정상적으로 동작하지 않는다는 w3schools 튜토리얼을 보고 예문을 살펴봤습니다. 해당 도큐먼트에서는 위와 같이 트릭을 사용해 정상적인 동작을 하듯이 보여줄 수 있다고 하는데요.
points.sort(function(a, b) {returns a - b});
이 부분이 이해가 가지 않습니다. 그러니까 [40, 100] 을 뺀 값 -60 과 [1, 5] 을 뺀 값 -4 그리고 [25, 10] 을 뺀 값인 15 를 이용해 비교하여 정렬하는것인가요?
위와 같이 동작한다고 생각을 해봤지만 마지막 25 와 10 은 어떻게 정렬이 되는지 궁금합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
var points = [40, 100, 1, 5, 25, 10] points.sort(); // Array [ 1, 10, 100, 25, 40, 5 ] points.sort(function(a, b) { return a - b }); // Array [ 1, 5, 10, 25, 40, 100 ]
array.sort(fn)
일 때,fn(a, b)
이 반환하는 결과가 0보다 작으면 a를 앞으로, 0이면 그냥 두고, 0보다 크면 b를 앞으로 오도록 인덱스를 변경합니다.위 소스에서는 a - b가 0보다 작으면 a가 앞으로, 0이면 그냥 두고, 0보다 크면 b가 앞으로 오겠죠?
다음 링크 참고하세요: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
댓글 입력