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

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

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

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"]

是不是很简单

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容