成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

從基礎的角度來談談javascript數(shù)組對象的sort()方法

zlyBear / 3208人閱讀

這大晚上的,明天還要碼地,廢話就不多說了,因為無意(-. -)看見了有不少同學問關于數(shù)組排序的問題,也有不少同學給出了很好的解答,給了我不少啟發(fā),感謝大家對我(-_ -)的幫助.另外感謝@xuexiphpa同學在js數(shù)組中的排序問題中給的推薦.

 
 關于數(shù)組排序的sort()方法(不帶參數(shù)):
       

那么上面的輸出結果是什么呢?

   arr.sort()輸出結果:a,b,c,d,e
   arr2.sort()輸出結果:1,15,20,30,6

為什么是這樣的結果呢?

在不帶參數(shù)的情況下sort()方法默認會將數(shù)組元素當作string類型來升序排序,根據(jù)它們的unicode碼從小到大依次排列.
我們先用charCodeAt獲得一下它們的unicode值:

       元素 unicode 
       1     49
       15    49 53
       20    50 48
       30    51 48
       6     54

首先比較第一位的大小,相同的話比較第二位的unicode值的大小,所以就得出arr2的輸出結果.

關于數(shù)組排序的sort(compareFun)方法(帶參數(shù)):

     

輸出結果:1,6,15,20,30
為什么呢?查手冊我們知道

   a-b<0  a將會放在b前面  //a0  b將會放在a前面  //a>b

這里a,b是數(shù)組內相鄰的元素依次進行比較,比較結果按照上述規(guī)則調整位置,所以總是數(shù)值小的元素排在前面,即升序排列.

同樣,如果要降序排序的話,doucment.write(arr2.sort(function(a,b){return b-a;}));按照上述規(guī)則就變成了:

   -(a-b)>0=>b-a>0=>b>a   b將會放在a前面
   a-b=0                  a,b的位置不改變
   -(a-b)<0=>b-a<0=>b

注意:影響排序方式的是sort(compareFun(){return result;})參數(shù)返回結果與0的比較關系,至于(a-b)或是(b-a)它們是怎么被sort()識別判斷而后又運算出結果的,看這里

   functin sort(functin(a,b){return result;}) {
        Native Code;
    }

從上述可以看出,對單純的字符串(String)數(shù)組升序排序的話,sort()方法(無參數(shù))比較適合;而在(Number)數(shù)組比較排序的時候,sort(compareFun)(帶參數(shù))更合適。

簡單示意一下原理:
   
  

關于這個問題,還請大家多指教,晚安!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/78371.html

相關文章

  • 2018年螞蟻金服前端一面總結(面向2019屆學生)

    摘要:在這次螞蟻金服的電話面試里面認識到了自己很多不足的地方吧。把字符串分割為字符串數(shù)組。從起始索引號提取字符串中指定數(shù)目的字符。通常消息包括客戶機向服務器的請求消息和服務器向客戶機的響應消息。 先簡短的介紹一下我自己吧,我是一個前端學習者,雖然我基礎知識也學了比較好,但是許久不用的知識就像流失的水,很容易就忘。在這次螞蟻金服的電話面試里面認識到了自己很多不足的地方吧。雖然在阿里內推后的人才...

    VEIGHTZ 評論0 收藏0
  • 2018年螞蟻金服前端一面總結(面向2019屆學生)

    摘要:在這次螞蟻金服的電話面試里面認識到了自己很多不足的地方吧。把字符串分割為字符串數(shù)組。從起始索引號提取字符串中指定數(shù)目的字符。通常消息包括客戶機向服務器的請求消息和服務器向客戶機的響應消息。 先簡短的介紹一下我自己吧,我是一個前端學習者,雖然我基礎知識也學了比較好,但是許久不用的知識就像流失的水,很容易就忘。在這次螞蟻金服的電話面試里面認識到了自己很多不足的地方吧。雖然在阿里內推后的人才...

    RobinQu 評論0 收藏0
  • 怎樣使你 JavaScript 代碼簡單易讀

    摘要:讓我們先從怎樣刪除數(shù)組中的重復項這個簡單問題開始。當然,這兩個位置對于重復元素來說是不同的。僅允許存在唯一值,所以當你傳入數(shù)組時,它會自動刪除重復的值。祝你有一個美好的編碼時間,盡量不要讓生活中簡單的事情復雜化。 翻譯:瘋狂的技術宅https://medium.freecodecamp.o... 本文首發(fā)微信公眾號:前端先鋒歡迎關注,每天都給你推送新鮮的前端技術文章 showIm...

    Lin_YT 評論0 收藏0
  • Java項目經驗——程序員成長鑰匙

    摘要:當你真正到公司里面從事了幾年開發(fā)之后,你就會同意我的說法利用找工作,需要的就是項目經驗,項目經驗就是理解項目開發(fā)的基本過程,理解項目的分析方法,理解項目的設計思 Java就是用來做項目的!Java的主要應用領域就是企業(yè)級的項目開發(fā)!要想從事企業(yè)級的項目開發(fā),你必須掌握如下要點: 1、掌握項目開發(fā)的基本步驟 2、具備極強的面向對象的分析與設計技巧 3、掌握用例驅動、以架構為核心的主流開發(fā)...

    zhangfaliang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<