標籤:排序 javascrip rtc json rip code john local 總結
前幾天在工作碰到一個json對象排序的問題,一直認為JavaScript不能進行對象的排序,其實並不是,今天就來總結下常見的幾種簡單排序:
第一類 純數字;
var arrOld = [4,10,9,1,0,31];
var arrNew = arrOld.sort(sortNum); function sortNum (a,b){ return a-b;
} //輸出結果:[0, 1, 4, 9, 10, 31]
sort() 方法用於對數組的元素進行排序,在原數組上進行排序,不產生副本。預設安裝字元編碼的順序進行排序,如果想按其他標準排序就需要提供比較函數,sortNum() 就是進行數字排序的函數。
第二類 英文字母;
var arrOld = ["John","Alley","Selina","Yuan","Delia"]; var arrNew = arrOld.sort(); //["Alley", "Delia", "John", "Selina", "Yuan"]
這個就比較簡單了,sort排序即可
第三類 中文漢字,還是直接上代碼;
var arrOld = ["張三","李四","王五","安利","蔡敏"]; var arrNew = arrOld.sort(sortChiese); function sortChiese(param1,param2){ return param1.localeCompare(param2); } //["安利", "蔡敏", "李四", "王五", "張三"]
localeCompare() 按照本地特定的順序進行比較
第四類 對象類的排序,也是本次的重點;
var arrOld = {"msg":[{"num": 10,"姓名":"張三","性別":"男","年齡":15},
{"num": 1,"姓名":"李四","性別":"男","年齡":25}, {"num": 22,"姓名":"王五","性別":"女","年齡":20}, {"num": 9,"姓名":"馬六","性別":"男","年齡":15}, {"num": 32,"姓名":"朱琪","性別":"女","年齡":15}]}; var arrNew = bubbleSort(arrOld.msg); function bubbleSort(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i].num>arr[j].num){//如果前面的資料比後面的大就交換 var temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } return arr; }
舉一反三,我們就能通過上面三種簡單的排序思路對姓名、性別、年齡等進行排序了。這裡引用的是冒泡排序,當然也可以使用其他排序方法。
使用JavaScript幾種簡單的排序