美文网首页小知识
javascript面试题系列之——javascript数组去重

javascript面试题系列之——javascript数组去重

作者: 悦者生存 | 来源:发表于2018-10-24 09:44 被阅读15次

    数组去重面试过的人想必都很熟悉,非常重点的一道题

    咱们主要讲一些简单易记的方法以供参考

    1.indexOf
    我们可以用 indexOf 简化内层的循环:

    var array = [1, 1,2,43,2];
    
    function unique(array) {
        var res = [];
        for (var i = 0, len = array.length; i < len; i++) {
            var current = array[i];
            if (res.indexOf(current) === -1) {
                res.push(current)
            }
        }
        return res;
    }
    
    console.log(unique(array));
    

    这种方法想必大家都很熟悉吧,但是这种方法很耗性能,每次都得遍历

    2.排序后去重

    其实我们可以先将数组进行排序,排序以后会有很多相同的值在一起,然后我们把现在的值和上一次的值进行对比,不相同的话就存进去,就可以达到相同的去重的效果

    var array = [1, 1,2,43,2];
    
    function unique(array) {
        var res = [];
        var sortedArray = array.concat().sort();
        var seen;
        for (var i = 0, len = sortedArray.length; i < len; i++) {
            // 如果是第一个元素或者相邻的元素不相同
            if (!i || seen !== sortedArray[i]) {
                res.push(sortedArray[i])
            }
            seen = sortedArray[i];
        }
        return res;
    }
    
    console.log(unique(array));
    

    3.filter方法
    这种方法可以更快速的写出去重方法

    var array = [1, 1,2,43,2];
    
    function unique(array) {
        return array.concat().sort().filter(function(item, index, array){
            return !index || item !== array[index - 1]
        })
    }
    
    console.log(unique(array));
    

    4.es6的set方法

    var array = [1, 2, 1, 1, '1'];
    
    function unique(array) {
        return [...new Set(array)];
    }
    
    console.log(unique(array)); // [1, 2, "1"]
    

    是不是很简单

    相关文章

      网友评论

        本文标题:javascript面试题系列之——javascript数组去重

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