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);

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

原文地址:https://www.cnblogs.com/hermit-gyqy/p/10550210.html