JavaScript字串排序localeCompare()筆記

來源:互聯網
上載者:User

標籤:相等   gobject   傳回值   描述   bar   定義   理解   拼音   列表   

轉摘:http://www.cnblogs.com/anniey/p/6184301.html

今天遇到了一個沒有接觸過的方法,是localeCompare()。查了一些相關的文檔,給出的定義很模糊,所以就把自己的理解寫下來。

  首先由例子入手!

  已知一串學生姓名的字串,根據學生姓名的長度按照降序排序,並返回名稱列表。等長度的名稱將以相反的字母順序(Z-> A)返回。

  給出字串 string = "xxa xxb xxc xxd xa xb xc xd";

  返回 [‘xxd‘, ‘xxc‘, ‘xxb‘, ‘xxa‘, ‘xd‘, ‘xc‘, ‘xb‘, ‘xa‘];

接下來就是正解代碼!

 1 function lineupStudents(students){ 2     var stu=students.split(" "); 3     stu.sort(function(a,b){ 4         if(a.length==b.length){ 5             return b.localeCompare(a); 6         }else{ 7             return b.length-a.length; 8         } 9     });10     console.log(stu);11 }12 var s1 = ‘Tadashi Takahiro Takao Takashi Takayuki Takehiko Takeo Takeshi Takeshi‘;13 lineupStudents(s1);//輸出[‘Takehiko‘,‘Takayuki‘,‘Takahiro‘,‘Takeshi‘,‘Takeshi‘,‘Takashi‘,‘Tadashi‘,‘Takeo‘,‘Takao‘]

  這個例子中還是利用array對象的排序方法,在排序參數提供的函數中再來進行本地的排序。

  接下來看看Sort() 官方說法:

 

arrayobj.sort(sortfunction)

 

  參數

 

arrayObj

 

必選項。任意 Array 對象。

 

sortFunction

 

可選項。是用來確定元素順序的函數的名稱。如果這個參數被省略,那麼元素將按照 ASCII 字元順序進行升序排列。

 

  說明

 

sort 方法將 Array 對象進行適當的排序;在執行過程中並不會建立新的 Array 對象。

 

如果為 sortfunction 參數提供了一個函數,那麼該函數必須返回下列值之一:

 

  • 負值,如果所傳遞的第一個參數比第二個參數小。
  • 零,如果兩個參數相等。
  • 正值,如果第一個參數比第二個參數大。

 

再來看看localeCompare()是怎麼說的!

 

  定義和用法

 

用本地特定的順序來比較兩個字串。

 

  文法

 

stringObject.localeCompare(target)

 

參數

描述

target

要以本地特定的順序與 stringObject 進行比較的字串。

 

傳回值

 

說明比較結果的數字。如果 stringObject 小於 target,則 localeCompare() 返回小於 0 的數。如果 stringObject 大於 target,則該方法返回大於 0 的數。如果兩個字串相等,或根據本地定序沒有區別,該方法返回 0。

 

綜上兩個方法的說明,在sortfunction參數存在的情況下都會有數字結果傳回值。而在例子中最關鍵的步驟就是b.localeCompare(a),按著特定的順序比較兩個字串;

 

另外再補充一點,stringObj.localeCompare(target)中誰比較誰,決定了列表的升序還是降序。例如:

 

1 if(a.length==b.length){2     return a.localeCompare(b);3 }else{4     return a.length-b.length;5 }

 

結果顯示就是升序排列!

針對於localeCompare()(比較兩個字串,考慮了預設的本地定序),使用的本地規則有漢字和英語的,例子中用的是英語,則是根據字母排序的。如果有用到漢字則是根據漢字拼音來排序。

JavaScript字串排序localeCompare()筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.