0

当我想使用 sort() 函数对数组进行排序时,它会给出一个按字母顺序排序的数组。例如。

var a=[9,10,1];
a.sort();

我越来越a = [1,10,9]

所以,根据我使用另一个功能的建议

function sortfunction(x, y){
    return (x - y) //causes an array to be sorted numerically and ascending
}

然后用

a.sort(sortfunction);

得到正确的结果。

谁能详细解释一下,这是如何工作的?

4

1 回答 1

3

第一个版本失败,因为它们被比较为字符串("9"大于"10"),称为字典排序。

自定义比较器函数以数组ab成员身份调用。

根据返回的内容,成员会发生变化。如果0返回,则成员被认为是等价的,如果是负数,则a小于 b如果是正数,则相反。

如果您想对此进行可视化,您可以随时登录控制台ab观察它们的比较方式(并注意如何从未进行任何冗余比较)。

这一切都由排序算法支持,由实现选择。例如,Chrome会根据成员的类型使用不同的算法。

于 2013-07-30T02:52:24.123 回答