问答详情
源自:7-22 数组排序sort()

排序问题,如何理解函数 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>


提问者:天涯蝶舞 2016-07-09 22:05

个回答

  • 李小子
    2016-07-16 12:07:10

    关于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()呢?这个我也不清楚

  • 何处觅运行
    2016-07-10 19:05:35

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

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

  • qq_新时代_0
    2016-07-10 00:31:27

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

  • 慕沐7520144
    2016-07-10 00:28:09

    实际上代码可以写成:

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

    2行     return a - b;

    3行     }))

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

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