浅析数组翻转与数组去重

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


数组翻转

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

  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

你可能感兴趣的:(浅析数组翻转与数组去重)