JavaScript sort function which takes a parameter允许一个人传递一个函数。
例如:
var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){return a - b}) //Array now becomes [7, 8, 25, 41]
代码是怎么来的
function(a,b){
return a - b
}
被解释为升序?应该分为三种情况,< 0
, == 0
, 和 > 0
,但是当 a
时这有什么意义呢?和 b
可以是任何东西吗?
谢谢!
var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){return a - b}) //Array now becomes [7, 8, 25, 41]
只需将其更改为
var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){console.log("comparing " + a + ", " + b);return a - b}) //Array now becomes [7, 8, 25, 41]
在控制台日志中尝试上述代码后,您将看到以下结果
var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){console.log("comparing " + a + ", " + b);return a - b}) //Array now becomes [7, 8, 25, 41]
is interpreted to be ascending? It's supposed to be divided into three cases, <0 , ==0, and >0 ; but how does this make sense when a and b can be anything?
第一个比较:25,8
现在,让我们来回答你对它如何选择 a、b 的值的疑问。当您运行代码时,您会看到第一个比较是在 25,8 之间进行的,如果结果为正,则表示 8 较小。所以它只是将它重新排序为 8、25。
第二次比较:25,7
接下来在 25 和 7 之间进行比较,这是因为如果结果为负数,则第三个数字将放在 25 之后,并且将完成三个数字的排序。
但情况不同,现在结果又是阳性。该数组还重新排序为
8, 7, 25
之后它再次执行测试,直到发现条件为阳性。所以现在它比较 8、7,结果还是负数。
数组再次将自身重新排序为
7, 8, 25
第三个比较:25、41
现在,在最后一次比较中,结果为正,这意味着 41 大于 25。
因此数组将自身重新排序为
7,8,25,41