JS——數組之sort排序的用法


sort排序

轉載自:https://blog.csdn.net/idomyway/article/details/80544509 

    js中用方法sort()為數組排序。sort()方法有一個可選參數,是用來確定元素順序的函數。如果這個參數被省略,那么數組中的元素將按照ASCII字符順序進行排序。

例如:

  var arr = ["a", "b", "A", "B"];
  arr.sort();
  console.log(arr);

因為字母A、B的ASCII值分別為65、66,而a、b的值分別為97、98,所以上面輸出的結果是 [“A”, “B”, “a”, “b”] 。

當我們對數字進行排序的時候

  var arr = [15, 8, 25, 3];
  arr.sort();
  console.log(arr);

結果是 [15, 25, 3, 8] 。其實,sort方法會調用每個數組項的toString()方法,得到字符串,然后再對得到的字符串進行排序。雖然數值15比3大,但在進行字符串比較時”1”則排在”3”前面。顯然,這種結果不是我們想要的,這時,sort()方法的參數就起到了作用,我們把這個參數叫做比較函數。

對數組數字排序用函數來改變,修改方法如下:

  var arr = [23, 9, 4, 78, 3];
  var compare = function (x, y) {//比較函數
    if (x < y) {
      return -1;
    } else if (x > y) {
      return 1;
    } else {
      return 0;
    }
  }
  console.log(arr.sort(compare));

結果為 [3, 4, 9, 23, 78] ,返回了我們想要的結果

如果要按降序排序,比較函數寫成這樣即可:

  var compare = function (x, y) {
    if (x < y) {
      return 1;
    } else if (x > y) {
      return -1;
    } else {
      return 0;
    }
  }

我們還可以對上面的函數進行簡化的寫法:

  var arr = [23, 9, 4, 78, 3];
    //升序
      arr.sort(function(a,b){
        retun a-b;
      });
    //降序
      arr.sort(function(a,b){
        retun b-a;
      });


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM