微信小程序之数组对象排序【冒泡排序】 - yuzhouxiaogegit/blog GitHub Wiki

微信小程序之数组对象排序【冒泡排序】

微信小程序之数组对象排序【冒泡排序】原理:

【原理】前后两个数两两进行比较,如果符合交换条件,交换位置。直到所有数据排序完成,结束比较。

【示例1】数组排序

/*
     函数名:_sortArr

     功能:通过数组中值排序,正向排序,反向排序,采用冒泡排序

     参数1:tempArr 传入数组

     参数2:传入排序方式,1 从小到大排序 ,-1 从大到小排序 ,其他值则不进行排序


 */


 function _sortArr(tempArr = [], sort_order = 1) {

     var tempArr = JSON.parse(JSON.stringify(tempArr)); // 深赋值一份,保证原来的数组不被改变

     var tempArrLength = tempArr.length;

     for (var i = 0; i < tempArrLength; i++) {// 比较次数
         // 每轮比较次数
         for (var j = 0; j < tempArrLength - i - 1; j++) {
             // 判断两个值是否符合交换条件
             if (sort_order == 1) { //排序从小到大
                 if (tempArr[j] > tempArr[j + 1]) {
                     var temp = tempArr[j + 1];
                     tempArr[j + 1] = tempArr[j];
                     tempArr[j] = temp;
                 }
             } else if (sort_order == -1) { // 排序从大到小

                 if (tempArr[j] < tempArr[j + 1]) {
                     var temp = tempArr[j + 1];
                     tempArr[j + 1] = tempArr[j];
                     tempArr[j] = temp;
                 }
             } else { // 不排序
                 return tempArr;
             }

         }

     }

     return tempArr;

 }


 // _sortArr 方法调用示例

 var tempArr = [1, 8, 96, 66666, 2, 3, 5, 68, 567, 888888];

 console.log(_sortArr(tempArr,1)); //从小到大排序

 console.log(_sortArr(tempArr, -1)); //从大到小排序

  console.log(tempArr); // 原始数组

【示例2】:通过数组对象中id进行排序

 /*
      函数名:_sortObj
 
      功能:通过数组中下面的对象排序,正向排序,反向排序,采用冒泡排序
 
      参数1:tempArr 传入数组对象
 
      参数2:传入排序方式,1 从小到大排序 ,-1 从大到小排序 ,其他值则不进行排序
 
      参数3:排序的key值
 
  */
 
  function _sortObj(tempArr = [], sort_order = 1, key) {
 
      var tempArr = JSON.parse(JSON.stringify(tempArr)); // 深赋值一份,保证原来的数组对象不被改变
 
      var tempArrLength = tempArr.length;     
 
      for (var i = 0; i < tempArrLength; i++) {// 比较次数
          // 每轮比较次数
          for (var j = 0; j < tempArrLength - i - 1; j++) {
              // 判断两个值是否符合交换条件
              if (sort_order == 1) { //排序从小到大
                  if (tempArr[j][key] > tempArr[j + 1][key]) {
                      var temp = tempArr[j + 1];
                      tempArr[j + 1] = tempArr[j];
                      tempArr[j] = temp;
                  }
              } else if (sort_order == -1) { // 排序从大到小
                  if (tempArr[j][key] < tempArr[j + 1][key]) {
                      var temp = tempArr[j + 1];
                      tempArr[j + 1] = tempArr[j];
                      tempArr[j] = temp;
                  }
              } else { // 不排序
                  return tempArr;
              }
 
          }
 
      }
 
      return tempArr;
 
  }
 
  // _sortObj 方法调用示例
 
  var tempArrObj = [{ id: 265, name: '张山' }, { id: 0, name: '李四' }, { id: 2, name: '王武' }, { id: 3, name: '赵四' }, { id: 5, name: "刘建" }, { id: 9999, name: '万龙' }];
 
  console.log(_sortObj(tempArrObj, 1, 'id')); //从小到大排序
 
  console.log(_sortObj(tempArrObj, -1, 'id')); //从大到小排序
 
  console.log(tempArrObj); // 原始数组对象