Array原型上添加一个去重的函数(返回新数组)

155 阅读1分钟

1、indexOf

if (!Array.prototype.unique) {
    Array.prototype.unique = function () {
        let arr = [];
        for (let i = 0; i < this.length; i++) {
            if (arr.indexOf(this[i]) === -1) {
                arr.push(this[i])
            }
        }
        // console.log(arr);
        return arr;
    }
}

2、哈希

if (!Array.prototype.unique) {
    Array.prototype.unique = function () {
        let arr = [];
        let obj = {};
        for (let i = 0; i < this.length; i++) {
            if (!obj[typeof this[i] + this[i]]) {
                arr.push(this[i]);
                obj[typeof this[i] + this[i]] = true;
            }
        }
        return arr;
    }
}

3、includes

if (!Array.prototype.unique) {
    Array.prototype.unique = function () {
        for (let i = 0; i < this.length; i++) {
            if (!arr.includes(this[i])) {
                arr.push(this[i]);
            }
        }
        return arr;
    }
}

4、set

if (!Array.prototype.unique) {
    Array.prototype.unique = function () {
        let set=new Set(this);
        return [...set];
    }
}

5、map

if (!Array.prototype.unique) {
    Array.prototype.unique = function () {
        let map=new Map();
        this.filter(item=>!map.has(item)&&map.set(item,1));
    }
}