10

来自“Learning PHP, MySql and Javascript by. Robin Nixon”一书的这一部分错了吗?

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

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

输出为 6,7,23,74

书上说:

如果 sort() 中的匿名函数返回大于零的值,则排序假定ab之前。

如果 sort() 中的匿名函数返回小于零的值,则排序假定b位于a之前。

排序在数组中的所有值上运行此函数以确定它们的顺序。

这是错的吗?因为....

a这里是7
b这里23

7 - 23 = -16// 一个小于零的数字。书上说 b 应该在 a 之前。

所以最终的输出应该是74, 23, 7, 6

4

2 回答 2

5

看来这是错误的。来自MDN

如果 compareFunction(a, b) 小于 0,则将 a 排序到比 b 低的索引。

(在这种情况下,“下标”意味着 a 在 b 之前)

于 2012-07-06T18:29:47.000 回答
2

输出是正确的,但解释不正确。如果方法返回 < 0,则 a 在 b 之前。

于 2012-07-06T18:30:19.730 回答