一知半解,函数function sortNum()

来源:7-22 数组排序sort()

码渣也难当

2014-12-22 16:39

()里面的a,b是什么?函数也没在下面调用啊?

写回答 关注

4回答

  • 爱溜达
    2015-05-04 19:08:25

    看了些资料,初浅的理解可以这样:

    sort()函数,要实现特定排序的话,函数要求提供一个(比较函数做为)参数,该(函数)参数 要有两个比较值,而且需要返回值,用于说明这两个值的相对顺序的数字。这个比较函数的两个参数可以是 a 和 b,或者 x和y ,是象征意义,至于sort()函数拿到这个参数(比较函数)怎么内部处理,是系统内部的事,我们暂且不用关心,知道这么用就可以了


  • 码渣也难当
    2014-12-23 13:32:53

    两位的回答都有可取的地方,第一位的简单明了,第二位略显专业。。。

  • Tracy_
    2014-12-23 10:39:31

    唉,楼上说的有错误。

    “当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换”这句话绝对是错的。


    arrayObject.sort(sortby) 

    sortby    可选。规定排序顺序。必须是函数。    

    返回值

    对数组的引用。请注意,数组在原数组上进行排序,不生成副本(也就是说原数组会发生改变)。

    说明

    如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

    如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

    若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

    若 a 等于 b,则返回 0。

    若 a 大于 b,则返回一个大于 0 的值。


    <script type="text/javascript">

    function sortNumber(a,b)
    {
      return a - b
    }

    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>


    输出:

    10,5,40,25,1000,1
    1,5,10,25,40,1000


    menghu...

    嘻嘻,为什么总感觉在哪里看过

    2014-12-29 17:34:40

    共 1 条回复 >

  • 康振宁
    2014-12-23 09:09:10

    sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递 给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。这里是涉及到算法的,你可以在网上搜一些算法题自己先了解一下算法

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题