03 数组去重

33 阅读1分钟

1. 双指针 + hash

function unique(arr) {
    const map = {};
    let l = 0;
    let r = 0;
    while (r < arr.length) {
        if (!map[arr[r]]) {
            arr[l++] = arr[r];
            map[arr[r]] = true;
        }
        r++;
    }
    return arr.slice(0, l);
}

2. 使用数组的filter方法 + hash

function unique1(arr) {
    const map = {};
    return arr.filter((v) => {
        if (!map[v]) {
            map[v] = true;
            return true;
        }
        return false;
    });
}

3. 利用es6 Set数据结构的特性

const unique2 = arr =>  Array.from(new Set(arr));