为了账号安全,请及时绑定邮箱和手机立即绑定

排序问题,如何理解函数 function sortNum(a,b) {return b-a;},这表示重写底层函数吗?


如何理解函数  function sortNum(a,b) {return b-a;},这表示重写底层函数吗?另外document.write(myarr.sort(sortNum));中sortNum表示函数为什么不写成sortNum()呢?


<!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 b-a;

   }

var myarr = new Array("80","16","50","6","100","1");

document.write(myarr.sort(sortNum));

</script>

</head>

<body>

</body>

</html>


正在回答

4 回答

关于sortNum()是否可以这样理解:以两个数为例a,b通过a-b判断a-b的差与1和-1的大小关系。sort()函数自带排序的方法  再利用sort()函数的判断依据( 若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
  若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
  若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。)这样的话就把a和b排列好。当然多个的话,可以从左至右两两相比较!至于ortNum表示函数为什么不写成sortNum()呢?这个我也不清楚

3 回复 有任何疑惑可以回复我~

sort(   );括号中要有一个函数来确定排列顺序。 sortNum(a,b)就是这个确定排列顺序的函数。a,b不是参数,

在sort中直接写 sort(sortNum)就可以。  return a-b是升序,return b-a是降序。

0 回复 有任何疑惑可以回复我~

 function sortNum(a,b) {return b-a;},这表示重写底层函数吗也可以这么理解,因为 return b-a  表示重新排列数组里的顺序,document.write(myarr.sort(sortNum));中sortNum表示函数为什么不写成sortNum()呢?因为sort()的语法为:  stringobject.sort(函数方法);  说明里面可以放方法 sortNum() 。

0 回复 有任何疑惑可以回复我~

实际上代码可以写成:

1行     document.write(myarr.sort(function (a,b){

2行     return a - b;

3行     }))

而这里涉及到一个函数指针传递的问题(再次强调,是传递函数指针,而不是调用函数)。

假如定义 function test(){}; ,对于这个函数,test(即函数名)就是函数指针,test 指向函数主体。在实际些代码中,我们可以将函数名替换为一个匿名函数,即 function(){},也就是我上面的那种写法。


0 回复 有任何疑惑可以回复我~
#1

天涯蝶舞 提问者

返回a-b,应该是个数字,不是顺序,也没有排序的方法,如何通过返回的这个数字进行排序的呢?事将a-b的值返回到底层函数进行计算的吗?
2016-07-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

排序问题,如何理解函数 function sortNum(a,b) {return b-a;},这表示重写底层函数吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信