zoukankan      html  css  js  c++  java
  • 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);

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

  • 相关阅读:
    HQueue_Install_In_Ubuntu
    win10_64_ssh连接linux
    win10防火墙服务灰色解决办法
    打开houdini软件的脚本
    houdini_license_sever start and off
    Java关于Object类中equal方法的理解
    Java关于Object类中equal方法的理解
    单源最短路径
    单源最短路径
    最小生成树
  • 原文地址:https://www.cnblogs.com/hermit-gyqy/p/10550210.html
Copyright © 2011-2022 走看看