Javascript 数组去重

Javascript 数组去重方法

原数组

let arr = [1, 3, 4, 5, 9, 1, 3, 4, 0, 3, 7, 8, 6, 8];

01 使用 set 成员的唯一性

function uniqueArray(arr) {
    return Array.from(new Set(arr));
}
console.log(uniqueArray(arr));          // [1, 3, 4, 5, 9, 0, 7, 8, 6]

02 使用 map 键的唯一性

function uniqueArray(arr) {
    let map = new Map();
    let ans = new Array();

    for (let i = 0; i < arr.length; ++i) {
        if (!map.has(arr[i])) {
            // 此处可以 map 元素的 value 用不上可以是任意值
            map.set(arr[i], i);
            ans.push(arr[i]);
        }
    }

    return ans;
}

console.log(uniqueArray(arr));          // [1, 3, 4, 5, 9, 0, 7, 8, 6]

03 使用 includes 方法

function uniqueArray(arr) {
    var ans = [];
    for (let i = 0; i < arr.length; ++i) {
        if (!ans.includes(arr[i])) {
            ans.push(arr[i]);
        }
    }

    return ans;
}

console.log(uniqueArray(arr));          // [1, 3, 4, 5, 9, 0, 7, 8, 6]

04 使用 indexOf 方法

function uniqueArray(arr) {
    var ans = [];
    for (let i = 0; i < arr.length; ++i) {
        if (arr.indexOf(arr[i]) == i) {
            ans.push(arr[i]);
        }
    }

    return ans;
}

console.log(uniqueArray(arr));          // [1, 3, 4, 5, 9, 0, 7, 8, 6]

05 使用 sort 方法

function uniqueArray(arr) {
    var ans = [];

    arr = arr.sort();
    ans.push(arr[0]);
    for (let i = 1; i < arr.length; ++i) {
        if (arr[i] != arr[i - 1]) {
            ans.push(arr[i]);
        }
    }

    return ans;
}
console.log(uniqueArray(arr));          // [0, 1, 3, 4, 5, 6, 7, 8, 9]

06 使用 filter 方法

function uniqueArray(arr) {
    return arr.filter((item, index) => {
        return arr.indexOf(item) == index;
    })
}

console.log(uniqueArray(arr));          // [1, 3, 4, 5, 9, 0, 7, 8, 6]

07 使用 reduce 方法

function uniqueArray(arr) {
    return arr.reduce((ans, item, index) => {
        if (arr.indexOf(item) == index) {
            ans.push(item);
        }
        return ans;
    }, []);
}

console.log(uniqueArray(arr));          // [1, 3, 4, 5, 9, 0, 7, 8, 6]
posted @ 2020-09-04 03:00  多半是条废龙  阅读(136)  评论(0编辑  收藏  举报