美文网首页
总结一下数组去重的几个方法

总结一下数组去重的几个方法

作者: web前端攻城狮 | 来源:发表于2019-09-25 00:08 被阅读0次

    方法1:

    关键词:双for循环、splice
    思 路:将数组中的值一个个的比较,重复的就删掉
    复杂度:O(n^2)

    function removeDup(array) {
        for (var i = array.length-1; i>=1; i--){
            for(var j = i-1; j>=0; j--){
                if(array[j] == array[i])
                    array.splice(j,1);
            }
        }
        return array;
    }
    
    a = [1,1,2,2,2,3,3,4];
    removeDup(a);
    // [1, 2, 3, 4]
    

    方法2:

    关键词 indexOf、push
    思路:设置一个新数组,根据indexOf筛选原数组,只要新数组中没有的,就push到新数组
    复杂度:O(n)

    function removeDup(array) {
        var newArray = [];
            for(var i = 0; i < array.length;i++){
                if(newArray.indexOf(array[i]) == -1 ) {
                    newArray.push(array[i]);
                }
            }
        return newArray;
    }
    
    a = [1,1,2,2,2,3,3,4];
    removeDup(a);
    // [1, 2, 3, 4]
    

    方法3:

    关键词 es6 Set、Array.from
    思 路:
    Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化,其成员的值都是唯一的,没有重复的值。
    Array.from()方法可以将类数组对象和可遍历(iterable)的对象转化为真正的数组。

    function removeDup(a) {
      return Array.from(new Set(a));
    }
    
    a = [1,1,2,2,2,3,3,4];
    removeDup(a);
    // [1, 2, 3, 4]
    

    总结
    在前端面试中,数组去重还是一个出现频率比较高的题目,算是一种基本能力吧。以上方法,在我看来,还是比较容易理解的,还有一些其他方法,正在整理中,会陆续更新。

    相关文章

      网友评论

          本文标题:总结一下数组去重的几个方法

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