2012-07-06 102 views
10

本部分是由「Robin Nixon學習PHP,MySql和Javascript」一書出錯嗎?數組排序()

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

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

輸出爲6,7,23,74

書中說:

如果匿名函數內部排序()返回一個值大於零,那種假設之前b

如果內部排序的匿名函數()大於零返回一個值時,那種假設b一個之前。

排序在數組中的所有值上運行此函數以確定它們的順序。

這是錯的嗎?因爲....

a這裏是7
b這裏是小於零23

​​//一個數字。書說它應該在a之前出現。

所以最終的輸出應74, 23, 7, 6

+1

不,它是正確的:http://jsfiddle.net/cjD3v/ – 2012-07-06 18:27:48

+4

你知道,你可以只是:_try它out_。就像上面的jsfiddle – TheZ 2012-07-06 18:28:11

+1

但是這本書的解釋是錯誤的? – 2012-07-06 18:28:41

回答

5

看來,這是錯誤的。從MDN

如果compareFunction(a,b)小於0,則將a排序爲低於b的索引。

(「低指數」,在這種情況下,將意味着一個來自b)之前

2

輸出是正確的,但對此的解釋是沒有。如果方法返回< 0,則a在b之前。