美文网首页
浅析数组翻转与数组去重

浅析数组翻转与数组去重

作者: 宁不空 | 来源:发表于2019-08-09 23:58 被阅读0次

    世界上很多的困难,只是思维上设限。


    数组翻转

    数组翻转有很多方法,这里总结俩种:

    1. 原生方法 reverse
    reverse.png
    1. 使用循环交换数组前后元素

      /**
      *  arr = [1,2,3,4,5,6,7]
      *  数组交换元素 即第一个跟最后一个 第二个跟倒数第二个...
      *  0       arr.length - 1 - 0
      *  1       arr.length - 1 - 1
      *  2       arr.length - 1 - 2
      *  总共交换次数 为 arr.length % 2 取余是为了防止个数为奇数
      *  据此可以写出函数
      **/
      var arr = [1,2,3,4,5,6,7];
      for(var i = 0, leng = arr.length % 2; i < leng; i += 1) {
        var temp = arr[i];
        arr[i] = arr[arr.length - 1 - i];
        arr[arr.length - 1 - i] = temp; 
      }
      

    数组去重

    数组去重也总结俩种方法

    1. 使用Set结构,es6新语法中的Set数据结构有着天然的去重性,不允许重复数据的存在,所以我们可以这样子操作
    ```javascript
     var arr = [1,2,1,4,3,5,6,2];
     arr = new Set(arr);
    ```
    
    set.png
    1. 使用循环去重

      /*
      *  方法:
      *  首先声明一个新数组,插入原数组的第一项,然后依次用原数组的每一项与新数组的每一项比较,如果相同就跳出循环不处理,不同就在比较完新数组的每一项之后插入新数组
      */
      var arr = [2,3,5,6,1,2,98,5,2];
      var t = [];
      t.push(arr[0]);
      for(var i = 0, leng = arr.length; i < leng; i += 1) {
        for(var j = 0, lengs = t.length; j < lengs; j += 1) {
          if(arr[i] == t[j]) {
            // 如果新数组中存在与原数组相同的值,就跳出此次循环比较下一个数
            break;
          }
          if(j == t.length - 1) {
            // 如果比较到新数组的最后一项都没有相同的值,就将该值插入新数组
            t.push(arr[i]);
          }
        }
      }
      console.log(t);
      
    循环去重.png

    当然,比较的时候还以结合使用indexOf 或者 includes 来简化操作
    1. indexOf

    indexof.png
    1. includes
    includes.png

    相关文章

      网友评论

          本文标题:浅析数组翻转与数组去重

          本文链接:https://www.haomeiwen.com/subject/kbfljctx.html