日期:2014-05-18  浏览次数:20455 次

请高人给看看javsript基础知识,怎么a-b是正序,b-a就成了倒序了呢??
我在学习javascript。以下是脚本。是数组排序的。
<html>
<body>

<script type="text/javascript">

function sortNumber(a, b)
{
return a - b //这里是正序,如果改成b-a就成了倒序的,请问高手,这里的减号是什么意思,明明是字符吗,怎么也能互相减吗??相减是什么意思??
//对了,还有,arr.sort(sortNumber))是什么意思,怎么一个方法里又套了一个方法??
}

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort(sortNumber))

</script>

</body>
</html>

我是初学的,正在打基础呢,请您说细些<最好能准确些>,我先谢谢看贴的各位朋友了。如果你给我解决了以上两个问题,我马上解分,说话算话。


------解决方案--------------------
arrayobj.sort(sortfunction) 
参数
arrayObj 

必选项。任意 Array 对象。 


sortFunction 


可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。 



说明
sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。 



如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一: 

负值,如果所传递的第一个参数比第二个参数小。 
零,如果两个参数相等。 
正值,如果第一个参数比第二个参数大,这个时候,回交换第一个参数与第二个参数

个人理解是:交换排序
当程序执行
arr.sort(sortNumber)) 的时候,
先传入sortNumber的是10,5.因为10-5=5>0,所以10和5会交换,(arr[0]变成5,arr[10]变成10)
然后接着传入10,40,由于10-40=-30<0,所以10和40不交换,
然后有传入40,25由于40-25=15>0,所以交换
...以下类似.
所以,执行第一遍的时候1000被排到最后,
其他的一此类推.

也就是说:第一次比较的时候找到最大的1000并放到数据的最后一位,第二次比较的时候找到第二大,.....


个人理解,说错了勿怪!

------解决方案--------------------
楼主,你也没有好好看我给你回帖子啊。我的帖子中不是说了吗

“sort() 方法可以接受一个 方法为参数 ,这个方法有两个参数。分别代表每次排序比较时的两个数组项。sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。 ”

再加上风车车说的
“如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大,这个时候,回交换第一个参数与第二个参数 

如果这样你还看不懂,谁也没有办法了~~~~