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

时间:2013-02-07 08:56:48

标签: 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);
        return m;
    }
);
console.log("After = "+ x);

当我运行上面的代码时,我发现输出如下:(这是几行输出)

5 - 1 = 4 
1 - 7 = -6 
5 - 7 = -2 
3 - 5 = -2 
78 - 5 = 73 
666 - 5 = 661
etc....

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

另见Javascript Array.sort implementation?