WingFrank
2016-04-12 17:43
学习中的例子如下:
<script type="text/javascript">
function sortNum(a,b) {
return a - b;
//升序,如降序,把“a - b”该成“b - a”
}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr + "<br>");
document.write(myarr.sort(sortNum));
</script>
为何return a-b就是升序,而b-a就是降序,比较函数时,无论a-b还是b-a都只是两个参数,从数学角度,我可以把b看作a,把a看作b,为何结果是不同的呢?
该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后
好好看下这个,就能理解了
我对于例子是这样理解的: 因为a-b的值就是sort函数的参数,当参数<=-1时,,就表示在unicode表中a在b之前,所以sort函数自动将a,b降序排列
虽然从数学的角度说没错,但是你用的是人家已经封装好了的sortNum函数,函数内部将a和b定顺序了,a-b和b-a不能等同。可以类比为a1-a2和a2-a1,你那种是忽略顺序,相当于a-a和b-b,能理解么?
该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题