2015-01-01 24 views
2
var anArray = [ 5, 4, 8 , 1, 3] ; 

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

1)有人可以运行我通过JavaScript如何执行排序方法与函数作为参数传递?整数数组的排序方法如何工作? JS

  • 它会比较5 4,然后,因为它是积极的,4将前5。然后,它会比较5与所有其他号码,但1和3也小于5.因此,如何Java脚本知道哪个位置把它们放在5之前?

  • 然后它会比较4与其他每个数字和8与其他每个数字等等...... java脚本如何做到这一点?我想用笔和纸做。

2)为什么作为参数传递的函数是无名的?

谢谢。

+1

在大多数情况下,合并排序或快速排序使用它们更快('nlogn'运行时间).. –

+1

[这里是一个维基百科的文章,以帮助您开始使用如何排序的作品。(HTTP:// en.wikipedia.org/wiki/Sorting_algorithm)规范中没有规定用于JavaScript的精确算法。 – Pointy

回答

3
  1. 比较器功能究竟是如何被调用—即,在—传递的值的序列不是由语言的规范定义。它完全依赖于特定的JavaScript实现以及(可能)依赖于正在排序的数组中的值。只要说排序算法在想要比较两个数字时调用你的函数,就是这样。

    该函数预期会返回一个负值,零值或正值,表示这两个数字的排序应该是第一个排在第一位,即可以先到达,或者第二个排在第一位。一个快速的方法是从第一个数字减去第二个数字。

  2. 示例代码中的函数是一个匿名函数。它不需要名称,因为它将作为函数调用本身的结果绑定到接收函数中的符号。如果你愿意,你可以给这个函数一个名字。