Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 Array.sort()函数_Javascript_Arrays_Sorting - Fatal编程技术网

需要了解Javascript Array.sort()函数

需要了解Javascript Array.sort()函数,javascript,arrays,sorting,Javascript,Arrays,Sorting,这可能是一个非常基本的问题,但我无法理解这一点,因此请帮助我理解Javascript的Array.sort()函数在这里是如何工作的。我需要了解代码的试运行: var x = new Array(5,4,3,78,7,66,5,444,7,8,9,33,4,5,666,1); console.log("Before = "+ x); x.sort( function(a, b){ var m = a-b; console.log(a+" - "+b+" = "+m);

这可能是一个非常基本的问题,但我无法理解这一点,因此请帮助我理解Javascript的Array.sort()函数在这里是如何工作的。我需要了解代码的试运行:

var x = new Array(5,4,3,78,7,66,5,444,7,8,9,33,4,5,666,1);
console.log("Before = "+ x);
x.sort(
function(a, b){
    var m = a-b;
        console.log(a+" - "+b+" = "+m);
        return m;
    }
);
console.log("After = "+ x);
当我运行上述代码时,我发现输出如下:(以下是几行输出)

最后,它以升序打印排序后的数组:

After = 1,3,4,4,5,5,5,7,7,8,9,33,66,78,444,666 

请让我知道它是如何获取“a”和“b”的值的,以及它是如何执行所有操作的。

有各种排序算法,但所有(可能只是大多数)都需要一种方法来比较两个元素

大多数语言中的比较函数都是这样工作的。 当返回值为正时,第二个值较小,当返回值为负时,第一个值较小。如果为零,则它们是相同的

Javascript实际使用的排序算法可能因实现而异,并且可能在一个实现中使用多个不同的算法,甚至一个排序


另请参见

它取决于排序的内部实现。这可能是heapsort或quicksort的一些变体。您的示例有点误导。比你发布的要长得多。完整的输出正确地显示了它将每个数字与其他数字进行比较,以确定它们的顺序。是的,我只放了几行输出可能重复的可能重复的这并没有回答OP的问题,这就是算法如何选择要测试的值。@TedHopp-我不同意。我认为这完美地回答了OP的问题(在最近的编辑之前和之后!)
After = 1,3,4,4,5,5,5,7,7,8,9,33,66,78,444,666