<!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;
}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr.sort(sortNum));
</script>
</head>
<body>
</body>
</html>
还有就是document.write(myarr.sort(sortNum));与document.write(myarr.sort(sortNum()));的区别,求大牛解释
权威指南上的定义希望能帮到你·~
这个函数的定义:myArray.sort(sortMethod);
注意: 该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。
按照定义:
若a-b<=-1即b-a>1 ,排序为AB(B较大)
a-b>=1 则排序为BA (A较大)
也就是说较大的排在后面。。升序。。反之,b-a为降序。。。
你是不是想问有没有括号的区别?我觉得是这样,sort()里面调用的是方法而不是属性,就像array.length中length是属性,所以不需要加括号,而mystr.toUpperCase()中toUpperCase()是方法名,所以调用时需要加上括号。这里同理,你在script中写的是"function sortNum()",可见sortNum()被定义为一个方法,那么调用该方法时就应该加上括号,才是完整的方法名~不知道我说的是不是你要的~
我认为,不是说function(a,b)在排序,排序的还是sort()函数,function(a,b)只是给一个排序的依据,而return a-b就是一种最常见的排序依据——按从小到大排。至于为什么,首先这是一个方法,就像定时器一样的方法,js就是这么设定的,我也不知道。
可以这样理解,不要理解成a减b的意思,理解成在26个字母中a到b的意思,在26个字母中b比a大,所以写成a-b就是升序,写成b-a就是降序。