数组去重常用的几种方式

96 阅读1分钟

这也是一道比较一道经典的面试题,在一般面试的过程中会考察你的JS功底咋样,能说出两种、三种那都还好,能说出五种、六种那自然更佳,反正多多益善嘛。接下来我为大家提供了以下几种方案。供大家参考,可能不会很全面,但是有参考价值

1.双重暴力for循环 当 arr[i]的值和arr[j]的值相等的时候,就让splice('从第J项开始',删除一个值)以此类推达到去重的目的

//先定义一个数组
        var arr=[1,2,2,3,4,1,1,5,7,7,8,8,9,9,6,6,6,5]
        //双重for循环
        for(let i = 0;i < arr.length; i++){
          for(let j = i+1;j < arr.length; j++){ 
        //如果数组中有两个数相等,这里用三位运算符
         if(arr[i] === arr[j]){ 
        //在第j个元素开始删除,删除1个元素。splice方法,还可以对多个对象中的某个或某几个对象删除
        arr.splice(j,1);
        j--;
    }
  }
}

2.indexOf查找 通过数组的indexOf API对每一项进行判断 indexOf在没有找到的情况下会返回-1 然后再把新的数组进行添加

let arr = [1,1,2,2,3,3,4,4,5,5]
        function unqier(arr){
            let newArr = []
            arr.forEach(item => {
          
                if(newArr.indexOf(item) === -1){
                    newArr.push(item)
                }
            });
            console.log(newArr);
        }
        unqier(arr)

3.includes方法去重 这个方法跟上一个indexOf差不多includes()方法在查找每一项的时候假如没查到就返回false

 let arr = [1,1,2,2,3,3,4,4,5,5]
        function unqier(arr){
            let newArr = []
            arr.forEach(item => {
                if(!newArr.includes(item)){
                    newArr.push(item)
                }
            });
            console.log(newArr);
        }
        unqier(arr)
  1. set数组 最最最最简单的数组去重 两行代码搞定
     let arr = [1,2,34,1,2,34]
     let newArr = [...new Set(arr)]

还有很多的方法就不列举啦,其实日常开发中用set去重是很好的一种方式,通过掌握更多的去重方式可以增强对API的运用与理解也是很不错的一件事情。^_^