JavaScript数组排序函数方法

时间:2017-09-22 17:26:32

标签: javascript arrays sorting

我是JavaScript的新手,我几乎肯定是关于数组排序方法的荒谬基本问题。我试过谷歌搜索,但我已经空了。感谢您提供的任何帮助。

无论如何,我试图了解JavaScript如何操作数组,而且我对.sort方法感到很困惑。我提供的培训材料提供了以下示例:

var numbers = [3,1,2];
numbers.sort(function compareNumbers(current, next) {
    return current - next;
});

当我在控制台中运行时,我得到了这个:

numbers = [1,2,3];

我无法理解为什么这种情况正在发生。什么是JavaScript实际上以这种方式重新排序数字?为什么它会返回[1,2,3]而不是[3,2,1][2,1,3](current, next)参数代表什么,以及它们传递了什么?

道歉,如果这是一个愚蠢的问题,但我对JavaScript完全陌生。任何解释都会非常感激(越简单越好!)。

干杯!

1 个答案:

答案 0 :(得分:1)

Javascript Array.sort方法正在使用快速排序算法。

如果没有回调函数,则在将数据转换为字符串后,将按升序对数组进行排序。因此,如果要对数字进行排序,则始终需要提供回调方法。

可以提供一个带有两个参数(a,b)的回调方法来比较两个项目,并告诉排序方法项目A如何与项目B进行比较。

回调函数应该是: 1.如果两个项目相等,则返回0 2.如果项目A应位于项目B的右侧,则返回0以上 3.如果项目A应位于项目B的左侧,则返回小于零