1. 程式人生 > >JavaScript學習筆記 -- sort()的用法 JavaScript學習筆記 -- sort()的用法

JavaScript學習筆記 -- sort()的用法 JavaScript學習筆記 -- sort()的用法

 

JavaScript學習筆記 -- sort()的用法

 

      關於排序問題,第一次看教程/書的時候都是迷迷糊糊的感覺,看完就忘記了。等到看第二遍的時候,才發現自己其實沒有掌握該知識點,其實這些在網上都能搜到,但是隻有自己親自整理才會有比較深刻的印象。前面還有許多問題沒有寫在部落格上,以後視情況新增。

      關於JS的sort()方法和reverse()方法是可以直接用來給陣列進行排序的,reverse()用於逆向排序,而sort()用於正向排序。例項如下: 

  •  reverse()方法:將陣列逆序排列(跟原陣列的排序方式相反)
1 2 3 4 5 <script>      var box = [1,4,5,13,9];     
alert(box.reverse());  //[9,13,5,4,1]      alert(box);           //[9,13,5,4,1]  box本身也被修改了,說明是引用 </script>
  • sort()方法:將陣列按從小到大順序排列,注意:sort方法是根據字串首字母對應的字元編碼的順序進行排序,如果陣列元素是Number型別時會出現問題(自動將Number型別轉換為String型別進行比較),如下:
1 2 3 4 5 <script>      var box = [1,4,5,13,9];      alert(box.sort());  //[1,13,4,5,9]      alert(box);           //[1,13,4,5,9]  box本身同樣也被修改了,說明是引用 </script>

  

為了解決這個問題,需要引入一個方法形式的引數,進行數值大小的比較,如下:

1 2 3 4 5 6 7 8 9 10 <script>      var box = [1,4,5,13,9];      function sortNum(value1,value2){          return value1 - value2;          /*如果返回值為負數,value1排value2的前面,反之則調換順序,等於0不改變排序方式;          如果要從大到小排列,則return value2 - value1 即可 */      }      alert(box.sort(sortNum));   //1,4,5,9,13      alert(box);                  //1,4,5,9,13 </script>



      關於排序問題,第一次看教程/書的時候都是迷迷糊糊的感覺,看完就忘記了。等到看第二遍的時候,才發現自己其實沒有掌握該知識點,其實這些在網上都能搜到,但是隻有自己親自整理才會有比較深刻的印象。前面還有許多問題沒有寫在部落格上,以後視情況新增。

      關於JS的sort()方法和reverse()方法是可以直接用來給陣列進行排序的,reverse()用於逆向排序,而sort()用於正向排序。例項如下: 

  •  reverse()方法:將陣列逆序排列(跟原陣列的排序方式相反)
1 2 3 4 5 <script>      var box = [1,4,5,13,9];      alert(box.reverse());  //[9,13,5,4,1]      alert(box);           //[9,13,5,4,1]  box本身也被修改了,說明是引用 </script>
  • sort()方法:將陣列按從小到大順序排列,注意:sort方法是根據字串首字母對應的字元編碼的順序進行排序,如果陣列元素是Number型別時會出現問題(自動將Number型別轉換為String型別進行比較),如下:
1 2 3 4 5 <script>      var box = [1,4,5,13,9];      alert(box.sort());  //[1,13,4,5,9]      alert(box);           //[1,13,4,5,9]  box本身同樣也被修改了,說明是引用 </script>

  

為了解決這個問題,需要引入一個方法形式的引數,進行數值大小的比較,如下:

1 2 3 4 5 6 7 8 9 10 <script>      var box = [1,4,5,13,9];      function sortNum(value1,value2){          return value1 - value2;          /*如果返回值為負數,value1排value2的前面,反之則調換順序,等於0不改變排序方式;          如果要從大到小排列,則return value2 - value1 即可 */      }      alert(box.sort(sortNum));   //1,4,5,9,13      alert(box);                  //1,4,5,9,13 </script>