js數組去重排序(封裝方法)


對於數組去重、排序的方法

————————————————————— 去 重 ——————————————————————

 1. 雙層for循環去重

  var arrays = [1, 3, 5, 3, 6, 5, 8, 6, 9, 12, 8, 7, 3, 5, 2];

  function arr(val){
    for(var i = 0; i < val.length; i++){
      for(var k = i + 1; k < val.length; k++){
        if(val[i] == val[k]){
          val.splice(k, 1);
          k--;
        }
      }
    }
    return val;
  }
  var arrs = arr(arrays);
  console.log('arrs==>>', arrs);

  

 2. 通過indexOf去重

  var arrays1 = [1, 3, 5, 3, 6, 5, 8, 6, 9, 12, 8, 7, 3, 5, 2];

  function arr1(val){
    if(!Array.isArray(val)){
      console.log('type error!');
      return;
    }

    var array = [];
    for(var i = 0; i < val.length; i++){
      if(array.indexOf(val[i]) === -1){
        array.push(val[i]);
      }
    }
    return array;
  }
  var arrs1 = arr1(arrays1);
  console.log('arrs1==>>', arrs1);

 

 3. 利用Array.from與set去重 (最簡單)

  function arr2(val){
    if(!Array.isArray(val)){
      console.log('type error!');
      return;
    }
    return Array.from(new Set(val));
  }

  var arrs2 = arr2(arrays2);
  console.log('arrs2==>>', arrs2);

 

 

————————————————————— 排序 —————————————————————

  排序理念

  var a = 1;

  var b = 2;

  a += b;

  b = a - b;

  a -= b;

 

 1. 單向冒泡排序

  function bulwSort(nums){
    for(let i = 0; i < nums.length - 1; i++){
      let mark = true;
      for(let k = 0; k < nums.length - i - 1; k++){
        if(nums[k] > nums[k + 1]){
          [nums[k], nums[k + 1]] = [nums[k + 1], nums[k]];
          mark = false;
        }
      }
      if(mark){
        return;
      }
    }
  } 

  var arra3 = [2, 7, 9, 3, 5, 4, 6, 3, 4, 7, 8, 5, 6, 9, 2, 4, 3, 5];
  var ss = bulwSort(arra3);
  console.log('此方法修改原數組-->>', arra3);
  console.log('不會返回新數組-->>', ss);

 

  2. 冒泡排序

  function ying(arr){
    for(var i = 1; i < arr.length; i++){
      for(var k = 0; k < arr.length - 1; k++){
        if(arr[k] > arr[k + 1]){
          arr[k] += arr[k + 1];
          arr[k + 1] = arr[k] - arr[k + 1];
          arr[k] -= arr[k + 1];
        }
      }
    }
  }

  var arra4 = [4, 8, 45, 6, 3, 72, 6, 8, 9, 5, 2, 7, 1, 18, 24 ];
  var kfkf = ying(arra4);
  console.log('kfkf==>>', arra4);


—————————————— 封裝一個通用的方法將數組去重排序 ———————————————

  //封裝方法
  function sort(arr, index){
    arr[index] += arr[index + 1];
    arr[index + 1] = arr[index] - arr[index + 1];
    arr[index] -= arr[index + 1];
  }

  // swit 代表切換排序開關
  function Traverse(arr, swit){
    for(var i = 1; i < arr.length; i++){
      for(var k = 0; k < arr.length - 1; k++){
        if(swit){
          if(arr[k] > arr[k + 1]){
            sort(arr, k);
          }
        }else{
          if(arr[k] < arr[k + 1]){
            sort(arr, k);
          }
        }
      }
    }
    return arr;
  }

  var arrq1 = [8, 45, 6, 3, 72, 6, 8, 9, 5, 2, 7, 1, 18, 2];
  var qwzx = Traverse(arrq1, true); // 如果為false 則為倒序
  console.log('qwzx==>>', qwzx);

  // 去重
  var arrqwe = Array.from(new Set(qwzx));
  console.log('arrqwe==>>', arrqwe);

——————————————————————————————————————————————


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM