在Javascript的'sort'方法中调用函数

时间:2014-12-30 09:00:32

标签: javascript arrays sorting

在阅读一些教程代码时,我发现你可以在Javascript的sort方法中调用一个函数。例如,我有一个填充整数的数组:

var a = [8,6,2,4];

要从最大到最小的顺序排列这些整数,我创建了以下内容:

function numSort(num1, num2) {
  if (num1 > num2) {
    return 1;
  } else if (num1 === num2) {
    return 0;
  } else {
    return -1;
  }
}

最后将sort方法调用到我的数组

a.sort(numSort);

有两件事我不明白。特别是这个函数只接受两个参数,而我的数组则是两倍。我的问题是:

  1. 尽管只有这个,但是这个函数如何迭代每个元素 两个参数numm1num2
  2. 如何以及为什么没有争论 在sort方法中调用此函数时传递了什么?

3 个答案:

答案 0 :(得分:0)

  1. 重复调用数组中的值对。迭代的是sort,而不是你编写的函数。完整的算法是in the spec
  2. 调用函数时传递参数。它只是由sort函数的内部调用(将函数作为参数传递给它),而不是由您的代码调用。

答案 1 :(得分:0)

  
      
  1. 尽管只有两个参数numm1,num2?
  2. ,这个函数如何遍历每个元素   

它没有。 numSort不会迭代任何事情,它仍会进行迭代。sort。所有发生的事情是sort使用您提供的函数来判断任何给定的两个元素是否出现故障。

  
      
  1. 在sort方法中调用此函数时,如何以及为什么没有传递参数?
  2.   

因为它的不是被调用。正在调用sort,函数numSort正在传递给它。您的整个函数numSort是函数sort的参数。

答案 2 :(得分:0)

您可以在以下网站找到问题的详细解答

How to Sort Arrays in JavaScript