十年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
      南昌百恒網(wǎng)絡(luò)微信公眾號(hào) 掃一掃關(guān)注
      小程序
      tel-icon全國(guó)服務(wù)熱線:400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
      掃一掃打開百恒網(wǎng)絡(luò)微信小程序

      百恒網(wǎng)絡(luò)

      南昌百恒網(wǎng)絡(luò)

      Javascript Array(數(shù)組) 重排序方法

      百恒網(wǎng)絡(luò) 2012-03-13 5275

      Javascript Array 重排序方法

      數(shù)組中已經(jīng)存在兩個(gè)可以直接用來重排序的方法:reverse()和sort()。有讀者可能猜到了,reverse()方法會(huì)對(duì)反轉(zhuǎn)數(shù)組項(xiàng)的順序。請(qǐng)看下面這個(gè)例子:

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

      values.reverse();

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

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

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

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

      values.sort();

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

      可見,即使例子中值的順序沒有問題,但sort()方法也會(huì)根據(jù)測(cè)試字符串的結(jié)果改變?cè)瓉淼捻樞颉R驗(yàn)閿?shù)值5雖然小于10,但在進(jìn)行字符串比較時(shí),"10"則位于"5"的前面,于是數(shù)組的順序就被修改了。不用說,這種排序方式在很多情況下都不是最佳方案。因此sort()方法可以接收一個(gè)比較函數(shù)作為參數(shù),以便我們指定哪個(gè)值位于哪個(gè)值的前面。

      比較函數(shù)接收兩個(gè)參數(shù),南昌網(wǎng)站制作工程師提示,如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之前則返回一個(gè)負(fù)數(shù),如果兩個(gè)參數(shù)相等則返回0,如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之后則返回一個(gè)正數(shù)。以下就是一個(gè)簡(jiǎn)單的比較函數(shù):

      function compare (valuel, value2) {

      if (valuel return -1:

      } else if (valuel>value2) {

      return 1:

      } else {

      return 0:

      }

      }

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

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

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

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

      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

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

      南昌網(wǎng)頁(yè)設(shè)計(jì)公司工程師提醒,reverse()和sort()方法的返回值是經(jīng)過排序之后的數(shù)組.

      對(duì)于數(shù)值類型或者其valueOf()方法會(huì)返回?cái)?shù)值類型的對(duì)象類型.可以使用一個(gè)更簡(jiǎn)單的比較函數(shù):這個(gè)函數(shù)只要用第二個(gè)值減第一個(gè)值即可①:

      function compare (valuel, value2){

      return value2 - valuel;

      }

      由于比較函數(shù)通過返回一個(gè)小于零、等于零或大于零的值來影響排序結(jié)果,因此減法操作就可以適當(dāng)?shù)靥幚硭羞@些情況。

      ①南昌建網(wǎng)站公司百恒網(wǎng)絡(luò)前端開發(fā)工程師,如果想要按照升序排序,則compare()函數(shù)中的return語(yǔ)句應(yīng)該返回value2-value1.

      希望本文對(duì)廣大站長(zhǎng)或從事企業(yè)網(wǎng)站建設(shè)公司的團(tuán)隊(duì)有所幫助,如對(duì)此不太理解的,可以與南昌做網(wǎng)站公司百恒網(wǎng)絡(luò)技術(shù)部聯(lián)系。我們很高興與廣大站長(zhǎng)和從事企業(yè)網(wǎng)站建設(shè)公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗(yàn)。


      400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
      掃一掃打開百恒網(wǎng)絡(luò)小程序

      歡迎您的光顧,我們將竭誠(chéng)為您服務(wù)×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務(wù) 售后服務(wù)
       
      售后服務(wù) 售后服務(wù)
       
      備案專線 備案專線
       
      ×
      九九这里只有精品视频| 韩国精品福利一区二区三区| 国产国拍精品亚洲AV片| 日韩免费观看的一级毛片| 国产精品三级国语在线看| 久久久这里只有精品加勒比| 69p69国产精品| 亚洲国产精品国自产拍电影 | 久久亚洲国产成人精品性色| 人人鲁人人莫人人爱精品| 精品久久久久久无码中文字幕| 人妻少妇精品久久| 日韩亚洲Av人人夜夜澡人人爽| 国产精品久久久久影视青草| 精品国产亚洲一区二区三区在线观看| 亚洲熟妇久久精品| 日本精品视频一视频高清| 精品国产99久久久久久麻豆| 51精品视频免费国产专区| 久久棈精品久久久久久噜噜| 久久久久青草大香线综合精品| 久久九九青青国产精品| 亚洲精品无码精品mV在线观看| 久久se这里只有精品| 国产福利精品在线观看| 亚洲国产一成久久精品国产成人综合 | 亚洲AⅤ永久无码精品AA| 亚洲国产日韩在线人成下载| 亚洲日韩中文在线精品第一 | 亚洲精品成人片在线观看| 色婷婷久久久SWAG精品| 四虎永久在线精品免费一区二区| 日本精品一区二区三区在线视频一| 免费国产在线精品一区| 狼色精品人妻在线视频免费| 人妻老妇乱子伦精品无码专区| 日韩精品无码人妻一区二区三区| 这里只有精品视频| 国产精品成人观看视频| 国产中文在线亚洲精品官网| 亚洲中文字幕久久精品无码APP|