2016-12-11 45 views
-1

我从FreeCodeCamp课程学习JavaScript,并且遇到了这个排序功能。这个排序功能是如何工作的?

var array = [1, 12, 21, 2]; 

// Only change code below this line. 

array.sort(function(a,b){ 
    return b - a; 
}); 

这个排序函数用于数组的递减顺序的元素进行排序,我只是不明白怎么样。 有人可以解释我吗?

+0

您是否尝试在调试器中逐行浏览它? – csmckelvey

+3

你有充分和非常有文件解释在这里:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/sort –

+0

嗯好吧对不起,我应该尝试过:c – buoyantair

回答

1

比较功能

function (a, b) { 
    return b - a; 
} 

的结果由排序功能使用。

这很简单。每个减法的结果告诉排序函数哪个参数更大/更小,或者它们是否相等。

12 - 3 = 9 // positive result ---> first arg greater than second 
10 - 20 = -10 // negative result ---> first arg lesser than second 
10 -10 = 0 // equal 

根据这些结果,排序函数重新排列数组。

如果您将其更改为return a - b;排序顺序将被翻转。

+0

嘿,我有anothr问题 – buoyantair

1

这不是排序功能,它是一个呼叫内部排序函数传递用户给出的比较函数。这个比较函数简直就是,使用,由array.sort(这是深入Javascript内部,你不能轻易看到它)智能地交换元素,如果他们没有秩序。

它允许用户给定的比较函数的原因是因为您可能想要倒序或alpha排序而不是数字,或任何其他不同的方法来排序数据。

+0

只有一件事缺失,“如何”(比较结果大于/小于零导致交换,等等) – arhak