JavaScript 数组去重方法

Javascript教程 2025-09-15

方法 1: 使用Set去重

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

// 测试数组
const testArr = [1,2,2,3,4,4];

// 调用
const resultSet = uniqueSet(testArr);
// 输出
console.log('1. Set方法结果:', resultSet);
// 结果
// [1, 2, 3, 4]


方法 2: 使用filter和indexOf去重

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

// 测试数组
const testArr2 = ['a', 'b', 'b', 'c', 'a'];

// 调用
const resultFilter = uniqueFilter(testArr2);
// 输出
console.log('2. Filter方法结果:', resultFilter);
// 结果
// ['a', 'b', 'c']


方法3: 使用includes判断重复

function uniqueReduce(arr) {
    return arr.reduce((acc, current) => {
        if (!acc.includes(current)) {
            acc.push(current);
        }
        return acc;
    }, []);
}

// 测试数组
const testArr3 = [1, 1, 2, 3, 3, 4, 5];

// 调用
const resultReduce = uniqueReduce(testArr3);
// 输出
console.log('3. Reduce方法结果:', resultReduce);
// 结果
// [1, 2, 3, 4, 5]


方法4: 使用for循环去重

function uniqueForLoop(arr) {
    const result = [];
    for (let i = 0; i < arr.length; i++) {
        if (result.indexOf(arr[i]) === -1) {
            result.push(arr[i]);
        }
    }
    return result;
}

// 测试数组
const testArr4 = ['apple', 'banana', 'apple', 'orange'];

// 调用
const resultForLoop = uniqueForLoop(testArr4);


console.log('4. For循环方法结果:', resultForLoop);

// 结果
// ['apple', 'banana', 'orange']


方法5: 使用Map去重

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

// 测试数组
const testArr5 = [10, 20, 20, 30, 40, 40, 50];

// 调用
const resultMap = uniqueMap(testArr5);
// 输出
console.log('5. Map方法结果:', resultMap);
// 结果
// [10, 20, 30, 40, 50]

方法6: 使用Object键值去重

function uniqueObject(arr) {
    const obj = {};
    const result = [];
    for (const item of arr) {
        if (!obj[item]) {
            obj[item] = true;
            result.push(item);
        }
    }
    return result;
}

// 测试数组
const testArr6 = ['x', 'y', 'z', 'x', 'y'];

// 调用
const resultObject = uniqueObject(testArr6);
// 输出
console.log('6. Object方法结果:', resultObject);
// 结果
// ['x', 'y', 'z']