准确的说,此类写法是通用写法,绝非js所有,比如c++中也常用到:

代码部分如下:

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

var nums= new Array(30,10,144,23);
var sortednums= nums.sort(numcompare);

比较函数有个特点就是在调用的时候只写函数名,后面不带参数。

在看书的时候,书上是这样说的

如果a位于b之前,js期待比较函数返回的是一个负值,如果他们的位置相同,会返回0; 如果a位于b之后,返回一个正值。
因此,上面那段代码经过自定义排序之后,是按照升序排列的。

这个想起来怎么有些麻烦呢。
于是这样记忆吧(前提是a,b参数位置不变)

  • return a-b 返回的是升序
  • return b-a 返回的是降序

。。。目前就这样死记吧,真心觉得理解起来怪怪的,想到哪一天可能需要自拟一个树节点的比较函数,心里就发虚啊。


Yang_River
156 声望7 粉丝

引用和评论

0 条评论