js数组去重的4种方法:

js数组去重的4种方法:


<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Documenttitle>
head>
<body>
  <script>
    let arr = [1,2,4,5,5,6,4,3,5,6,9,0,23,6,89,1,3];
    //数组去重
    //1方法 从数组的后面往前找相同并移除
    function fn1(arr){
      let newArr = [...arr];
      for(let i=0, len = newArr.length;i<len; i++){
        let item = newArr[i];
        for(let j=len; j>i; j--){
          if(item === newArr[j]){
            newArr.splice(j,1);
          }
        }
      }
      return newArr;
    }
    console.log(fn1(arr));

    //2方法  遍历旧数组 在新数组里面找如果不存在就添加
    function fn2(arr){
      let newArr = [];
      for(let i=0;i<arr.length; i++){
        if(newArr.indexOf(arr[i]) == -1){
          newArr.push(arr[i])
        }
      }
      return newArr;
    }
    console.log(fn2(arr));

    //3方法 利用set的去重性
    function fn3(arr){
      let newArr = Array.from(new Set(arr));
      return newArr;
    }
    console.log(fn3(arr));

    //4方法 数组标记法
    function fn4(arr){
      let newArr = [];  //标记检测的数以存在
      for(let i=0; i<arr.length; i++){
        let item = arr[i];
        if(newArr[item]){ //如果有就说明重复 需移除
          arr.splice(i,1);
          i--;  //删除当前值后 后面的数下标往前挪所以还需判断当前向是否重复
        }else{  //如果没有就标记以存在
          newArr[item] = true;
        }
      }
    }

  script>
body>
html>

let arr = [1,2,4,5,5,6,4,3,5,6,9,0,23,6,89,1,3];

运行结果如下:

在这里插入图片描述

你可能感兴趣的:(js设计模式)