大数据数组去重

46 阅读1分钟

如果是数组中都是单一的数据类型,for + obj的效率最高

const uniq = arr => {
    const res = [];
    const obj = {};
    for (let i = 0, length = arr.length; i < length; i++) {
        if (!obj[arr[i]]) {
            res.push(arr[i]);
            obj[arr[i]] = 1;
        }
    }
    return res;
}

数组内的数据类型如果有多种,for + Set的效率最高

const uniq = arr => {
    const res = [];
    const set = new Set();
    for (let i = 0, length = arr.length; i < length; i++) {
        if (!set.has(arr[i])) {
            res.push(arr[i]);
            set.add(arr[i])
        }
    }
    return res;
}

Q: 为什么多类型用Set?

A: obj[1] === obj['1']