首页 新闻 会员 周边 捐助

Javascript代码的小小疑问(2)

0
[已解决问题] 解决于 2015-06-03 11:21

  一.先看下以下一段JS代码(成功排序):

   var arr = [0,1,1.3,4,5.4,66,13,44,3.2,55,38,12,124,91];

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

   arr.join();

   arr.sort(compare);

   arr.join();

   alert(arr);

 

  二.疑问

   “function compare(a,b){return (a-b);}”

   为什么将2个参数相减就是有了比较功能,为什么?

Coca-code的主页 Coca-code | 初学一级 | 园豆:10
提问于:2015-06-02 14:51
< >
分享
最佳答案
0

建议看算法导论。

排序时比较数组中两个元素大小时,会调用比较函数,通常会做一个>=0之类的判断,来确定哪个值更大,或者相等。

奖励园豆:5
xmodygetz | 小虾三级 |园豆:575 | 2015-06-02 15:13

没错,但是现在“{return (a-b);}”就解决比较了,这减式怎么理解?

Coca-code | 园豆:10 (初学一级) | 2015-06-02 15:18

@殷敏峰: 举个例子

你这里是 a-b;比如a=100;b=10;

结果是90

排序函数得到结果后立即做个判断 90>0 得到真,那么他就明白a大于b。

如果==0,那么就是a等于b

如果小于0,那么就是b大于a

所以一切情况都可以表示的很清楚

xmodygetz | 园豆:575 (小虾三级) | 2015-06-02 15:30

@xmodygetz: 

明白了,其实可以繁写一下,为了明意。

Coca-code | 园豆:10 (初学一级) | 2015-06-03 11:21
其他回答(1)
0

因为js设计者就是这么设计的

wufei | 园豆:338 (菜鸟二级) | 2015-06-02 14:58

...

支持(0) 反对(0) Coca-code | 园豆:10 (初学一级) | 2015-06-02 15:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册