2012-07-06 2 views
10

이 부분은 "Learning PHP, MySql and Javascript by Robin Nixon"이 잘못 되었습니까?숫자 배열 sort()

numbers = [7, 23, 6, 74]; 

numbers.sort(function(a,b){return a - b}); 

출력 6,7,23,74

인이 책은 말한다 :

익명 함수 내부의 종류()가 0보다 큰 값을 반환하는 경우, 정렬이 가정b 앞에옵니다. 일종의 내부 익명 함수()가 0보다 작은 값을 반환하는 경우

는 종류 B 앞에 오는 가정합니다.

정렬은 정렬을 결정하기 위해 배열의 모든 값에서이 함수를 실행합니다.

이 잘못된가요?

a 여기 여기 7
b입니다 0보다 23

7 - 23 = -16 // 작은 숫자입니다 .... 때문입니다. 책은 그것이 b가 오기 전에 온다고 말합니다.

그래서 최종 출력은 잘못된 것 같습니다 74, 23, 7, 6

+1

아니요, 맞습니다. http://jsfiddle.net/cjD3v/ –

+4

아시다시피, 다음과 같이 할 수 있습니다. 위의 jsfiddle에서처럼 – TheZ

+1

하지만 그 책의 설명은 틀린가 ?? –

답변

5

해야한다. MDN :

compareFunction (a, b)가 0보다 작 으면 a를 b보다 낮은 인덱스로 정렬하십시오.

("저급 인덱스"a가 b 앞에 오는 것으로,이 경우는 의미)

2

출력은 정확하지만 설명은 아니다. 메서드가 <을 반환하면 a가 b 앞에옵니다.