2012-07-06 132 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之前。