数组去重是一个常见的面试问题,也有很多种实现方式,我今天要介绍两种时间复杂度为O(n)的方法:

利用Object:

我们可以利用Object的key独一无二这个特点来进行数组去重。

function jsUnique(array) {
    let myObject = {};
    for (let i = 0; i < array.length; i++) {
        if (myObject[array[i]]) {
            continue;
        } else {
            myObject[array[i]] = true;
        }
    }
    return Object.keys(myObject).map(item => Number(item));
}

是不是简洁明了。但是注意一个容易忽略的地方,如果最后直接return Object.keys(myObject), 返回的数组中全是字符串。。。

利用Set

es6出来之后,新增的数据结构Set简直强大,利用“Set 中的元素是唯一的”这一特点,轻松实现数组去重。

function jsUnique2(array) {
    return Array.from(new Set(array));
}

简直不能更简单有没有!