1. 程式人生 > >js陣列排序的幾種方法

js陣列排序的幾種方法

// sort() 陣列物件排序
var arr = [
         {name:"小恭",age:11},
         {name:"小發",age:3},
         {name:"小喜",age:12},
         {name:"小財",age:40}
         ];
console.log(arr);
console.log(arr[0]);
var compare = function(obj1,obj2){
    var val1 = obj1.age;
    var val2 = obj2.age;
    if(val1 < val2){
       return 1;
    }else if(val1 > val2){
       return -1;
    }else{
       return 0;
    }
}
console.log("陣列物件排序:");
var sortArr = arr.sort(compare);
console.log(sortArr);
console.log(sortArr[0]);


//插入排序
var canArr = [0,4,2,6,7,8,2,14,57,8,99,0,45,32,12,1,1,1,1,45,0,9,8,7,6,5,4,3,2,115,67,68,56,55,43,21];
console.log(canArr);
var quchArr = canArr.distinct();
console.log(quchArr);
//插入排序
function insert(arr){  
 var s;   
  //升序
  for (var i = 1; i < arr.length; i++) { 
      for (var j = i; j > 0; j--) {   
      if (arr[j] < arr[j - 1]) {       
     s=arr[j];         
  arr[j]=arr[j-1];     
  arr[j-1]=s ;
  //console.log(arr);//可以打印出來每一個改變的步驟     
       }    
     }   
   }   
   //降序
 for (var i = 1; i < arr.length; i++) { 
     for (var j = i; j < 0; j--) {   
       if (arr[j] < arr[j - 1]) {       
     s=arr[j];         
  arr[j]=arr[j-1];     
  arr[j-1]=s ;
  //console.log(arr);//可以打印出來每一個改變的步驟     
      }          }   
   }  
  return arr;
}
console.log("插入排序:");
console.log(insert(quchArr));


//氣泡排序
function bubble(arr) { 
var s ;
// for (var i =0;i<arr.length;i++) { 
//   for (var j = 0; j < arr.length; j++) {
// if (arr[j] > arr[j + 1]){ 
// s = arr[j]; 
// arr[j]=arr[j+1]; 
// arr[j+1]=s; 
// } 
//    }
// }
for (var i =0;i<arr.length;i++) { 
  for (var j = 0; j < arr.length; j++) {
if (arr[j] < arr[j + 1]){ 
s = arr[j]; 
arr[j]=arr[j+1]; 
arr[j+1]=s; 

   }
}
 return arr;
}
console.log("氣泡排序:");

console.log(bubble(quchArr));

以上幾種方法鄙人稍作總結,如有更好歡迎分享