1. 程式人生 > >sort()方法的排序規則與實際應用

sort()方法的排序規則與實際應用

    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之間的隨機數,