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