这个JavaScript排序功能如何工作?

时间:2015-06-06 09:28:31

标签: javascript

我在书上发现了这个。那里没有很好的解释,特别是'vals.sort(compare)'部分。有人可以解释一下吗?

<script>

function compare ( value1, value2) {
    if (value1 > value2) {
        return 1;
    }
    else if (value2 > value1) {
        return -1
    }
    else {
        return 0;
    }
}

var vals = [12,93,41,62,99]
vals.sort(compare)
document.write(vals)
</script>

2 个答案:

答案 0 :(得分:0)

  1. sort()是一个数组实用程序函数,用于根据条件对数组值进行排序。
  2. 如果在未传递匿名函数或命名函数的情况下调用sort(),则默认情况下会根据每个字符的Unicode代码点值对值进行排序。
  3. 在javascript中,您可以匿名(function(){...})或按名称传递函数:

    function myFunction(){}

    [].sort(myFunction);

  4. 注意,您只传递函数名称而不是myFunction()因为这将执行该函数并传入返回的内容(这不是我们想要的)< / p>

  5. 在传递给sort()的回调函数中,例如compare(a,b),返回

    -1 - &gt; a 小于 b

    0 - &gt; a 等于到b

    1 - &gt; a greatar 比b

答案 1 :(得分:0)

我们可以将compare函数作为sort方法的参数传递,或者将其写入内联,例如

<script>
   var a = [30,2,1,9,15];
   a.sort(function(a,b) { return a-b; });
   document.write(a);
</script>

或者我们可以指定比较方法并在您的情况下明确调用它。

调用sort()方法时,它会比较两个值。它将值发送到compare函数,并根据返回的(负,零,正)值对值进行排序。