關於排序問題,第一次看教程/書的時候都是迷迷糊糊的感覺,看完就忘記了。等到看第二遍的時候,才發現自己其實沒有掌握該知識點,其實這些在網上都能搜到,但是只有自己親自整理才會有比較深刻的印象。前面還有許多問題沒有寫在博客上,以後視情況添加。 關於JS的sort()方法和reverse()方法是可以直接用 ...
關於排序問題,第一次看教程/書的時候都是迷迷糊糊的感覺,看完就忘記了。等到看第二遍的時候,才發現自己其實沒有掌握該知識點,其實這些在網上都能搜到,但是只有自己親自整理才會有比較深刻的印象。前面還有許多問題沒有寫在博客上,以後視情況添加。
關於JS的sort()方法和reverse()方法是可以直接用來給數組進行排序的,reverse()用於逆向排序,而sort()用於正向排序。實例如下:
- reverse()方法:將數組逆序排列(跟原數組的排序方式相反)
<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類型進行比較),如下:
<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>
為瞭解決這個問題,需要引入一個方法形式的參數,進行數值大小的比較,如下:
<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方法:http://shouce.jb51.net/jscript/index.html