十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
      南昌百恒網絡微信公眾號 掃一掃關注
      小程序
      tel-icon全國服務熱線:400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡微信小程序

      百恒網絡

      南昌百恒網絡

      Javascript Array(數組) 重排序方法

      百恒網絡 2012-03-13 5384

      Javascript Array 重排序方法

      數組中已經存在兩個可以直接用來重排序的方法:reverse()和sort()。有讀者可能猜到了,reverse()方法會對反轉數組項的順序。請看下面這個例子:

      var values= [1, 2, 3, 4, 5];

      values.reverse();

      alert (values); //5,4,3,2,1

      這里數組的初始值及順序是1、2、3、4、5。而調用數組的reverse()方法后,其值的順序變成了5、4、3、2、1。這個方法的作用相當直觀明了,但不夠靈活,因此才有了sort()方法。

      在默認情況下,sort()方法按升序排列數組項——即最小的值位于最前面,最大的值排在最后面。為了實現排序,sort()方法會調用每個數組項的toString()轉型方法,然后比較得到的字符串,以確定如何排序。即使數組中的每一項都是數值,sort()方法比較的也是字符串,如下所示:

      var values= [0, 1, 5, 10, 15];

      values.sort();

      alert (values); //0,1,10.15,5

      可見,即使例子中值的順序沒有問題,但sort()方法也會根據測試字符串的結果改變原來的順序。因為數值5雖然小于10,但在進行字符串比較時,"10"則位于"5"的前面,于是數組的順序就被修改了。不用說,這種排序方式在很多情況下都不是最佳方案。因此sort()方法可以接收一個比較函數作為參數,以便我們指定哪個值位于哪個值的前面。

      比較函數接收兩個參數,南昌網站制作工程師提示,如果第一個參數應該位于第二個之前則返回一個負數,如果兩個參數相等則返回0,如果第一個參數應該位于第二個之后則返回一個正數。以下就是一個簡單的比較函數:

      function compare (valuel, value2) {

      if (valuel return -1:

      } else if (valuel>value2) {

      return 1:

      } else {

      return 0:

      }

      }

      這個比較函數可以適用于大多數數據類型,只要將其作為參數傳遞給sort()方法即可,如下面這個例子所示:

      var values=[O, 1, 5, 10, 15];

      alert (values); //0,1, 5,10,15

      在將比較函數傳遞到sort()方法之后,數值仍然保持了正確的升序。當然,也可以通過比較函數產生降序排序的結果,只要交換比較函數返回的值即可:

      function compare (valuel, value2) {

      if(valuel < value2) {

      }else if(valuel>value2) {

      }else {

      return O:

      }

      }

      var values= [0, 1, 5, 10, 15];

      values.sort (compare);

      alert (values); // 15 ,10,5,1,0

      在這個修改后的例子中,比較函數在第一個值應該位于第二個之后的情況下返回l,而在第一個值應該在第二個之前的情況下返回一1。.交換返回值的意思是讓更大的值排位更靠前,也就是對數組按 照降序排序。當然,如果只想反轉數組原來的順序,使用reverse()方法要更快一些。

      南昌網頁設計公司工程師提醒,reverse()和sort()方法的返回值是經過排序之后的數組.

      對于數值類型或者其valueOf()方法會返回數值類型的對象類型.可以使用一個更簡單的比較函數:這個函數只要用第二個值減第一個值即可①:

      function compare (valuel, value2){

      return value2 - valuel;

      }

      由于比較函數通過返回一個小于零、等于零或大于零的值來影響排序結果,因此減法操作就可以適當地處理所有這些情況。

      ①南昌建網站公司百恒網絡前端開發工程師,如果想要按照升序排序,則compare()函數中的return語句應該返回value2-value1.

      希望本文對廣大站長或從事企業網站建設公司的團隊有所幫助,如對此不太理解的,可以與南昌做網站公司百恒網絡技術部聯系。我們很高興與廣大站長和從事企業網站建設公司技術人員分享我們的技術和經驗。


      400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡小程序

      歡迎您的光顧,我們將竭誠為您服務×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務 售后服務
       
      售后服務 售后服務
       
      備案專線 備案專線
       
      ×
      热久久这里只有精品| 久久精品免费网站网| 亚洲线精品一区二区三区 | 精品一区二区三区免费观看| 精品动漫一区二区无遮挡| 自拍中文精品无码| 国产亚洲综合精品一区二区三区| 久久久精品2019免费观看| 一本色道久久88综合日韩精品| 国产成人精品午夜福利在线播放| 国产99视频精品免视看9| 亚洲AV无码专区日韩| 2020国产精品自拍| 99久久免费国产精精品| 国产精品无码久久久久| 日韩精品一区二区三区中文版| 99精品国产在这里白浆| 国产精品热久久毛片| 精品国内自产拍在线视频| 国产精品午夜无码AV天美传媒| 无码人妻精品一区二区三区在线| 亚洲精品老司机在线观看| 日韩精品久久一区二区三区| 亚洲熟妇成人精品一区| 国产精品h在线观看| 久久精品日日躁精品| 老司机免费午夜精品视频 | 国产精品伦子一区二区三区| 777亚洲精品乱码久久久久久 | 色一乱一伦一图一区二区精品 | 久久精品国产精品亚洲艾| 亚洲精品乱码久久久久久蜜桃不卡| 国産精品久久久久久久| 国产成人青青热久免费精品| 久久精品国产亚洲αv忘忧草| 日韩精品无码一区二区三区 | 国产69精品久久久久777| 国内精品51视频在线观看| 精品国产杨幂在线观看| 精品熟女少妇a∨免费久久| 无码人妻精品一区二区三区夜夜嗨 |