整数数组的排序方法如何工作? JS
How the sorting method of integer array works ? JS
var anArray = [ 5, 4, 8 , 1, 3] ;
anArray.sort(function (a,b){return a - b});
1) 有人可以告诉我 JavaScript 如何使用作为参数传递的函数执行排序方法吗?
它会比较5和4然后因为它是正数,4会在5之前。然后它会比较5和其他所有数字但是1和3也小于5。那么如何java 脚本知道把它们放在 5 之前的哪个位置?
然后它将 4 与其他所有数字进行比较,8 与其他所有数字进行比较等...
java 脚本如何做到这一点?我想用笔和纸来做。
2) 为什么作为参数传递的函数是无名的?
谢谢。
比较器函数的具体调用方式——即传入值的顺序——并未由语言规范定义。它完全取决于特定的 JavaScript 实现和(可能)正在排序的数组中的值。只要说排序算法在想要比较两个数字时调用您的函数就足够了,仅此而已。
该函数预期 return 一个负值、零或positive,表示两个数的排序应该是第一个在前,要么可以在前,要么应该是第二个在前。一个快速的方法是从第一个数中减去第二个数。
您的示例代码中的函数是一个匿名函数。它不需要名称,因为它将作为函数调用本身的结果绑定到接收函数中的符号。如果需要,您可以为函数命名。
var anArray = [ 5, 4, 8 , 1, 3] ;
anArray.sort(function (a,b){return a - b});
1) 有人可以告诉我 JavaScript 如何使用作为参数传递的函数执行排序方法吗?
它会比较5和4然后因为它是正数,4会在5之前。然后它会比较5和其他所有数字但是1和3也小于5。那么如何java 脚本知道把它们放在 5 之前的哪个位置?
然后它将 4 与其他所有数字进行比较,8 与其他所有数字进行比较等... java 脚本如何做到这一点?我想用笔和纸来做。
2) 为什么作为参数传递的函数是无名的?
谢谢。
比较器函数的具体调用方式——即传入值的顺序——并未由语言规范定义。它完全取决于特定的 JavaScript 实现和(可能)正在排序的数组中的值。只要说排序算法在想要比较两个数字时调用您的函数就足够了,仅此而已。
该函数预期 return 一个负值、零或positive,表示两个数的排序应该是第一个在前,要么可以在前,要么应该是第二个在前。一个快速的方法是从第一个数中减去第二个数。您的示例代码中的函数是一个匿名函数。它不需要名称,因为它将作为函数调用本身的结果绑定到接收函数中的符号。如果需要,您可以为函数命名。