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

标签 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”的值以及它是如何进行所有操作的。

最佳答案

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

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

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

另见 Javascript Array.sort implementation?

关于javascript - 需要了解 Javascript Array.sort() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14747130/

相关文章:

java - 按内部对象(字符串、日期等)逆序对 ArrayList<Object[]> 进行排序

arrays - (arg) 对沿每个维度排序的扁平 nD 数组进行排序的最快方法?

javascript - 在鼠标悬停时更改链接和箭头颜色

javascript - 当鼠标悬停在子元素上时不要滚动主体

php - PHPs IteratorAggregate 中 getIterator 返回的数组不可遍历

c# - 字符串排序陷阱

javascript - Rails 应用程序中的嵌入卡加载缓慢和/或杀死页面

javascript - MouseLeave触发 Electron 中的子元素

c - 自由释放对象的校验和不正确 - C 中的二维 double 组

Python 错误 : len() of unsized object while using statsmodels with one row of data