在JavaScript中的数组类型中,“compareFunction”的参数是什么?

问题描述:

什么是“的compareFunction”的排序中在JavaScript的数组的论据? 如果您发现第二个参数,它有不随意在任何特定的顺序。而第一个参数总是按照当前顺序。我想知道第二个参数是如何选择的。在JavaScript中的数组类型中,“compareFunction”的参数是什么?

arr.sort(compareFunction) 

对于排序机制如何以及为什么要传递参数,您可以不做任何假设。它不在规范中,并且JavaScript运行时可以*地以任何想要的方式实现排序。甚至不需要在所有情况下都使用相同的排序机制。

比较函数应该简单地比较两个元素,并返回一个数字结果。此外,适当的比较函数应该是一致的:对于任何一对元件(以任一次序),调用比较函数的结果应该反映相同的排序。函数也应该是传递一致的。比较函数不应对正在排序的列表进行任何更改。如果比较函数不满足这些条件,则排序操作的结果是实现定义的(即,不能依赖任何特定的结果)。

+1

它是(至少部分地)[在spec](http://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.sort)为* *一些病例。 – Quentin

+1

@Quentin我不知道我看到什么,规定了对传递给函数的元素,比排序过程不应该通过'undefined'元素之外的其他模式。 – Pointy