sort()方法的排序規則與實際應用
阿新 • • 發佈:2018-11-02
var arr = [6,2,3,7,6,5,10]
arr.sort()
console.log(arr)//[10, 2, 3, 5, 6, 6, 7]
//從控制檯看出,陣列會按照字元的Unicode進行排序,這並不是我們想要的結果
sort()給我們提供了一個介面:sort(function(a,b){})
//升序 arr.sort(function(a,b){ return a - b }) console.log(arr)//[2, 3, 5, 6, 6, 7, 10]這才是我們想要的
sort()是如何實現排序,我們把a,b與arr控制檯輸出一下
arr.sort(function(a,b){ console.log(a,b,arr) return a - b }) /* 6 2 (7) [6, 2, 3, 7, 6, 5, 10] 6 3 (7) [2, 6, 3, 7, 6, 5, 10] 2 3 (7) [2, 6, 6, 7, 6, 5, 10] 6 7 (7) [2, 3, 6, 7, 6, 5, 10] 7 6 (7) [2, 3, 6, 7, 6, 5, 10] 6 6 (7) [2, 3, 6, 7, 7, 5, 10] 7 5 (7) [2, 3, 6, 6, 7, 5, 10] 6 5 (7) [2, 3, 6, 6, 7, 7, 10] 6 5 (7) [2, 3, 6, 6, 6, 7, 10] 3 5 (7) [2, 3, 6, 6, 6, 7, 10] 7 10 (7) [2, 3, 5, 6, 6, 7, 10] */ // 從控制檯的資料看出,sort()方法是使用的冒泡和插入兩種方式結合進行排序的(演算法自己去琢磨,小編也不會 = =)
sort()在實際應用中處理後臺返回的物件陣列,按照某個值進行排序
var data = [ {name:'aaa',age:18}, {name:'bbb',age:45}, {name:'ccc',age:30}, ] data.sort(function(a,b){ return a.age - b.age }) console.log(data) /* 0:{name: "aaa", age: 18} 1:{name: "ccc", age: 30} 2:{name: "bbb", age: 45} */ //這就得到我們想要的結果啦
某面試題,打亂陣列元素的順序
var ranArr = [1,2,3,4,5,6,7]
ranArr.sort(function(){
return Math.random() - 0.5;
})
//利用 Math.random()返回0到1之間的隨機數,