美文网首页
关于javascript中的sort()方法理解

关于javascript中的sort()方法理解

作者: Bior | 来源:发表于2020-04-17 16:42 被阅读0次

    在学习JavaScript的内置对象sort()时,我发现sort()是个比较难以理解的东西。(可能是本人的水平还不太够...),先写一篇文章记录一下吧。

    sort()方法的参数必须是函数,如果留空的话,则按unicode码顺序排列。

    例如:

    <script type="text/javascript">
      var arr = new Array(6)
      arr[0] = "George"
      arr[1] = "John"
      arr[2] = "Thomas"
      arr[3] = "James"
      arr[4] = "Adrew"
      arr[5] = "Martin"
      document.write(arr + "<br />")
      document.write(arr.sort())
    </script>
    

    输出:
    George,John,Thomas,James,Adrew,Martin
    Adrew,George,James,John,Martin,Thomas

    换个全部为数字的例子:

    <script type="text/javascript">
      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())
    </script>
    

    输出:

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

    这时候我们会,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:

    <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

    难以理解的地方就出现在这里,明明sortNumber应该是有两个参数,但是我们在调用时却一个参数都没有,那是怎么进行比较的呢?

    我的理解是这样的,当arr从第一个数开始调用sort时,10前面是没有数与它比较的,所以就到第二个,就是5,这时10就会与5比较,于是就会调用sortNumber并将10和5传进去。

    那就先这么理解吧...

    相关文章

      网友评论

          本文标题:关于javascript中的sort()方法理解

          本文链接:https://www.haomeiwen.com/subject/vwuyvhtx.html