Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个JavaScript排序函数是如何工作的?_Javascript - Fatal编程技术网

这个JavaScript排序函数是如何工作的?

这个JavaScript排序函数是如何工作的?,javascript,Javascript,我在一本书上找到了这个。这里没有很好的解释,特别是“vals.sort(compare)”部分。谁能给我解释一下吗 <script> function compare ( value1, value2) { if (value1 > value2) { return 1; } else if (value2 > value1) { return -1 } else { return

我在一本书上找到了这个。这里没有很好的解释,特别是“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>

功能比较(值1、值2){
如果(值1>值2){
返回1;
}
否则如果(值2>值1){
返回-1
}
否则{
返回0;
}
}
var VAL=[12,93,41,62,99]
VAL.sort(比较)
文件写入(VAL)
  • 是一个数组实用程序函数,用于根据条件对数组值进行排序
  • 如果调用
    sort()
    时未传递匿名函数或命名函数,则默认情况下会根据每个字符的
    Unicode
    代码点值对值进行排序
  • 在javascript中,可以匿名(
    function(){…}
    )或按名称传递函数,如:

    function myFunction(){}

    [].sort(myFunction)

  • 注意,您只传递函数name,而不喜欢
    myFunction()
    ,因为这将执行函数并传递返回的内容(这不是我们想要的)

  • 在传入
    sort()
    的回调函数中,例如,
    比较(a,b)
    ,返回

    -1
    ->a小于b

    0
    ->a等于b

    1
    ->a比b大


  • 我们可以将compare函数作为sort方法的参数传递,也可以内联编写,例如

    <script>
       var a = [30,2,1,9,15];
       a.sort(function(a,b) { return a-b; });
       document.write(a);
    </script>
    
    
    var a=[30,2,1,9,15];
    a、 排序(函数(a,b){返回a-b;});
    文件。编写(a);
    
    或者我们可以指定compare方法,并像在您的案例中那样显式调用它


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

    @Alex,谢谢!我一直在努力使
    代码
    正常工作!:)谢谢你的简单解释。@SajibDevnathAkash,欢迎。如果你想让我更详细地解释一些事情,请告诉我。你太好了。谢谢