Skip to content

实现数组去重 #4

Open
Open
@TieMuZhen

Description

@TieMuZhen

实现效果

uniq([1, 2, 3, 5, 3, 2]); // [1, 2, 3, 5]

实现方法

法1: 利用ES6新增数据类型 Set

function uniq (arr) {
    return [...new Set(arr)];
}

法2: 利用 indexOf

function uniq (arr) {
    const result = [];
    for (let value of arr) {
        if (result.indexOf(value) == -1) {
            result.push(value);
        }
    }
    return result;
}

法3: 利用 includes

function uniq (arr) {
    const result = [];
    for (let value of arr) {
        if (!result.includes(value)) {
            result.push(value);
        }
    }
    return result;
}

法4:利用 reduce

function uniq (arr) {
    return arr.reduce((pre, cur) => pre.includes(cur)? pre: [...pre, cur], [])
}

法5:利用 Map

function uniq (arr) {
    const map = new Map()
    const result = [];
    for (let val of arr) {
        if (!map.has(val)) {
            map.set(val, true);
            result.push(val);
        }
    }
    return result;
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions