我是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完全陌生。任何解释都会非常感激(越简单越好!)。
干杯!
答案 0 :(得分:1)
Javascript Array.sort方法正在使用快速排序算法。
如果没有回调函数,则在将数据转换为字符串后,将按升序对数组进行排序。因此,如果要对数字进行排序,则始终需要提供回调方法。
可以提供一个带有两个参数(a,b)的回调方法来比较两个项目,并告诉排序方法项目A如何与项目B进行比较。
回调函数应该是: 1.如果两个项目相等,则返回0 2.如果项目A应位于项目B的右侧,则返回0以上 3.如果项目A应位于项目B的左侧,则返回小于零