zoukankan      html  css  js  c++  java
  • js中sort()方法的用法,参数以及排序原理

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

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

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

    若 a 等于 b,则返回 0。

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

    例1:我们将创建一个数组,并按字母顺序进行排序:

    <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

    例2:我们将创建一个数组,并按字母顺序进行排序:

     
    <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

    例3:

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

    <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


    例4: 数字从大到小排序
    <script> 
      var numArr = new Array(12,23,1,4,23,34,2,5); 
      numArr.sort(function compare(a,b){return b-a;}); 
      for (var i = 0; i<numArr.length; i++) { 
        document.write(numArr[i] +"<br>"); 
      } 
    </script>

    结果:
    34 23 23 12 5 4 2 1

    我的理解就是, 如果比较函数的结果返回的是一个正值,就把第二个参数向前排位,返回的是个负值,就把第二个参数暂时排在第一个参数后面。


    参考自:

    https://segmentfault.com/a/1190000000410506

    http://www.jb51.net/article/4168.htm

  • 相关阅读:
    219. Contains Duplicate II
    189. Rotate Array
    169. Majority Element
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    119. Pascal's Triangle II
    118. Pascal's Triangle
    88. Merge Sorted Array
    53. Maximum Subarray
    CodeForces 359D Pair of Numbers (暴力)
  • 原文地址:https://www.cnblogs.com/zhn0823/p/5870271.html
Copyright © 2011-2022 走看看