Array.prototype.sort方法是對數組進行排序, 該方法帶一個函數參數,用來指定排序的規則.
我們先來看看sort 的簡單應用:
var arr=[2,1,3,4];
alert(arr.sort()) // [1,2,3,4] 從小到大排列
//現在由大到小排列 得到 [4,3,2,1]
alert(arr.sort(function(left,right){return left>right?-1:1}))
//這里,sort方法通過參數函數的返回值 1或者-1來決定是順排還是倒排
還記得我以前和大家說過的 利用 Function.apply 方法來獲取數組中的最大元素的方法嗎?
文中用了兩種不同的方法來獲取數組中的最大值.
現在 sort也可以來秀一下了.
var arr=[2,1,3,4];
var minValue=arr.sort()[0];
var maxValue=arr.sort()[arr.length-1] // arr.sort().pop()
怎么樣,這也是一種另類實現方法吧,還不用寫循環遍歷.
不過,我必須要指出的是,這種方法的效率是最低的,對于幾十個百來個元素的數組,你還是可以使用這種技巧.
但是,如果數組很大,用 sort()方法可以慢得讓你想抽煙
進一步討論 sort 對復雜數據結構的排序.
1. 對多維數組的排序
var arr=[
[2,1,55,4],
[5,3,22,3],
[1,2,77,2],
[9,4,33,5],
];
alert("默認按第一列排/n"+arr.sort().join("/n"))
alert("現在按第三列排/n"+arr.sort(function(left,right){return left[2]>right[2]?1:-1}).join("/n"))
alert("現在按第三列倒排/n"+arr.sort(function(left,right){return left[2]>right[2]?-1:1}).join("/n"))
2.對復雜數據結構的排序
Array.prototype.each=function(f){for(var i=0;i<this.length;i++) f(this[i],i,this)}
function showName(item){alert(item.name)}; //打印名字
var arr=[
{name:"bill",money:500},
{name:"go_rush",money:400},
{name:"dudu",money:9000}
];
//依次顯示 dudu,bill,go_rush 看來dudu是最有錢的,而我是最窮的