function sortNum(a,b) {
return a - b;
}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr.sort(sortNum));
return a - b; 这是什么意思?返回 a与b的差? 不是说要返回大或者小的那个吗?
这个函数接收两个参数a和b 而下面运用的时候却传了个数组过来是什么操作? 按之前的知识如果要比较数字数组不是for循环,依次比较myarr[i]和myarr[i+1] 然后返回大或小的那个然后在进行排序吗。这里直接这样不懂。
你有没有发现如果a<b,a-b总是取得负数,这就能够实现升序排列。
意思应该是sort 会吧数组里面的数据依次导入sortNum(a,b)这个函数里面,然后根据它返回的数值,负值,0,正值,来排序
剪切以下代码到你浏览器的console. 你就能看到它是如何排序的。
var myarr = new Array("80","16","50","6","100","1");
myarr = myarr.sort(function(a,b){ console.log("a - b", a - b); document.write(myarr + "<br>"); return a - b});
就是因为没有赋值,因为本身a>b。不信你把a,b换成e,f或者m,o,会是一样的---就好比体育课说按按大小个排列一样,老师给的手势就是a-b或者b-a的意思。。。。赋值了反而乱了。
额 这个sortNum(a,b)就是一个特殊的数字排序的函数,当 a == b的时候为0,a > b的时候为1, a < b 的时候为 -1