js数组去重的多种实现方式


双重for循环依次比较

将结果函数中的元素与原数组中的元素依次比较,重复的元素舍弃,不重复的元素添加仅结果函数。

function removeRepeatArr(arr) {
    const result = [];
    for (let i = 0, len = arr.length; i < len; i++) {
        let isRepeat = false;
        for (let j = 0, _len = result.length; j < _len; j++) {
            if (result[j] === arr[i]) {
                isRepeat = true;
                break;
            }
        }
        if (!isRepeat) {
            result.push(arr[i]);
        }
    }

    return result;
}

const arr = [1, 2, 1, 2, 3, 3, 4, 5];

console.log(removeRepeatArr(arr));
// [ 1, 2, 3, 4, 5  ]

使用hashtable

使用for循环创建hash表

function removeRepeatArr(arr) {
    const result = [];
    const hash = {};
    for (let i = 0, len = arr.length; i < len; i++) {
        if (!hash[arr[i]]) {
            hash[arr[i]] = true;
            result.push(arr[i]);
        }
    }

    return result;
}

const arr = [1, 2, 1, 2, 3, 3, 4, 5];

console.log(removeRepeatArr(arr));
// [ 1, 2, 3, 4, 5 ]

当然也可以用forEach代替for循环

function removeRepeatArr(arr) {
    const result = [];
    const hash = {};
    arr.forEach((item) => {
        if (!hash[item]) {
            result.push(item);
            hash[item] = true;
        }
    });
    
    return result;
}

const arr = [1, 2, 1, 2, 3, 3, 4, 5];

console.log(removeRepeatArr(arr));
// [ 1, 2, 3, 4, 5 ]

使用set去重

function removeRepeatArr(arr) {
    return Array.from(new Set(arr));
}

const arr = [1, 2, 1, 2, 3, 3, 4, 5];

console.log(removeRepeatArr(arr));
// [ 1, 2, 3, 4, 5   ]


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM