<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Array对象 </title>
<script type="text/javascript">
function sortNum(a,b) {
return a - b;
} //实现升序功能?这样写为什么就能实现升序功能
function asortNum(a,b) {
return b - a;
} //实现降序功能?为什么能起到降序作用。
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr.sort(sortNum)+"<br/>");
document.write(myarr.sort(asortNum));
</script>
</head>
<body>
</body>
</html>
这段代码实现了数组元素的升序和降序排列。关键是sort里面的函数起到了作用。可是那个函数为什么是这样写的,只是定义了a和b,并没有定义a-b是大于0还是小于0 为什么就是升序了。。。。
想复杂了,a-b 不是a减b的意思,是a至b。b-a也是同理。我们英文字母 正常 排序是不是a,b,c,d,e,f,g。所以a至b就是正序,b-a就是倒序。 不关什么大于0,小于0的什么事。
return a-b;
80-16=64;
80-50=30;
80-6-74;
80-100=-20;
80-1=79;
79,74,64,30,-20;
1,6,16,50,100;
/////////////
return b-a;
16-80=-64;
50-80=-30;
6-80=-74;
100-80=20;
1-80=-79;
20,-30,-64,-74,-79;
看的懂就看,看不懂就算了
100,50,16,6,1;
------------------------------------------------------来自问题评论 ------menghuanbaolei
意思是说a-b就是用第一个数减去其他数,结果由大到小排序,是不是结果越小,对应的数就越大。
所以79,74,64,30,-20 -------->1,6,16,50,100 是由小到大排序的
b-a的话其他数减去第一个数,结果有大到小排序,是不是结果越小,对应的数就越小
所以20,-30,-64,-74,-79 ---------------->100,50,16,6,1是由大到小排序的