zoukankan      html  css  js  c++  java
  • JavaScript引用类型之Array数组的排序方法

    数组中已经存在两个JavaScript给我们定义好的重排序的方法:reverse()和sort()方法,下面来简单分析下:

    1、reverse()    用于反转数组项的顺序,代码如下:

    <script>
        var colors=[1,2,3,4,5];
        colors.reverse();
        alert(colors.toString()); //输出:5,4,3,2,1
    </script>

    这里数组的初始顺序是1、2、3、4、5,调用数组的reverse()方法后,其值顺序变为5、4、3、2、1

    2、sort()  
    用法:arrayobj.sort(sortfunction)
    参数说明:
    (1)arrayObj   必选项,任意 Array 实例。
    (2)sortFunction   可选项,是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。 

    注意:sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。
    如果为 sortfunction 参数提供了一个函数,那么该函数必须为下列返回值之一: 
    负值,如果所传递的第一个参数比第二个参数小。 
    零,如果两个参数相等。 
    正值,如果第一个参数比第二个参数大。

    没有给sort()方法指定排序规则的代码如下:

    <script>
        //使用方法:arrayobj.sort(sortfunction)
        var colors=["张三","李四","王五",6,"stephen curry","Kevin Durant"];
        colors.sort(); //没有给sort()方法传递排序方法sortfunction。所以sort()方法会将colors数组里面的每一项调用toString()方法,然后对所有的数组项进行ASCII码值比较,
    //返回排序后的结果,最左边的是ASCII值最小的数组项,最右边的是ASCII最大的数组项
    alert(colors.toString()); //输出:6,Kevin Durant,stephen curry,张三,李四,王五 </script>

    给sort()方法指定排序规则     代码如下:

    <script>
        //使用方法:arrayobj.sort(sortfunction)
        var arr=[6,1,7,3,6,5];
        arr.sort(compare);
        alert(arr.toString());  //输出:1,3,5,6,6,7
        //排序规则
        function compare(value1,value2) {
            if(value1>value2){
                return 1;
            }
            else if(value1<value2){
                return -1;
            }
            else{
                return 0;
            }
        }
    </script>

    上面只是一种写法,而且个人认为不是很好,下面是其他的写法:

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

    降序排序

    <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> 
      var numArr = new Array(12,23,1,4,23,34,2,5); 
      numArr.sort(new Function("a","b","return a-b;")); 
      for (var i = 0; i<numArr.length; i++) { 
        document.write(numArr[i] +"<br>"); 
      } 
    </script> 
    <script> 
      function compare(a,b) { 
        return a-b; 
      } 
      var numArr = new Array(12,23,1,4,23,34,2,5); 
      numArr.sort(compare); 
      for (var i = 0; i<numArr.length; i++) { 
        document.write(numArr[i] +"<br>"); 
      } 
    </script> 
    <script> 
      var compare = function(a,b) { 
        return a-b; 
      } 
      var numArr = new Array(12,23,1,4,23,34,2,5); 
      numArr.sort(compare); 
      for (var i = 0; i<numArr.length; i++) { 
        document.write(numArr[i] +"<br>"); 
      } 
    </script> 

    写法有很多,所以喜欢那种就用哪种吧!

    现在学会了sort的用法,下面就用它实现数组的升序和降序方法,并封装一下,代码如下:

    /*
     @param arr   ---需要排序的数组
     @return   ---返回值为排序完的数组
     功能:对数组进行升序排序
     */
    function asc(arr){
    arr.sort(function(a,b){
        return a-b;
    });
        return arr;
    }
    
    /*
     @param arr   ---需要排序的数组
     @return   ---返回值为排序完的数组
     功能:对数组进行降序排序
     */
    function desc(arr){
        arr.sort(function(a,b){
            return b-a;
        });
        return arr;
    }

    学以致用,亘古不变的真理!

  • 相关阅读:
    CSS——半透明
    CSS——dispaly、overflow、visibility、opacity
    html——特例
    CSS——◇demo
    html——ico
    JS——函数
    JS——数组
    JS——for
    JS——i++与++i
    JS——三元表达式
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/5895329.html
Copyright © 2011-2022 走看看