JavaScript 字符串去重方法

Javascript教程 2025-09-15

方法 1: 使用Set去重(推荐)

function removeDuplicatesSet(str) {
    return [...new Set(str)].join('');
}

// 测试字符串
const testString = "hello world javascript programming";

// 调用
const resultSet = removeDuplicatesSet(testString);
// 输出
console.log('1. Set方法结果:', `"${resultSet}"`);
// 结果
// Set方法结果: "helo wrdjavsciptgmn"

利用 Set 自动去重的特性,最简单高效的方法。

方法 2: 使用 filter

function removeDuplicatesIndexOf(str) {
    let result = [];
    for (let char of str) {
        if (result.indexOf(char) === -1) {
            result.push(char);
        }
    }
    return result.join("");
}

// 测试字符串
const testString2 = "hello world javascript programming";

// 调用
const resultIndexOf = removeDuplicatesIndexOf(testString2);
// 输出
console.log('2. indexOf方法结果:', `"${resultIndexOf}"`);
// 结果
// indexOf方法结果: "helo wrdjavsciptgmn"


方法3: 使用includes判断重复

function removeDuplicatesIncludes(str) {
    let result = [];
    for (let char of str) {
        if (!result.includes(char)) {
            result.push(char);
        }
    }
    return result.join("");
}

// 测试字符串
const testString3 = "hello world javascript programming";

// 调用
const resultIncludes = removeDuplicatesIncludes(testString3);
// 输出
console.log('3. includes方法结果:', `"${resultIncludes}"`);
// 结果
// includes方法结果: "helo wrdjavsciptgmn"


方法4: 使用对象属性去重

function removeDuplicatesObject(str) {
    let obj = {};
    let result = [];
    for (let char of str) {
        if (!obj[char]) {
            obj[char] = true;
            result.push(char);
        }
    }
    return result.join("");
}

// 测试字符串
const testString4 = "hello world javascript programming";

// 调用
const resultObject = removeDuplicatesObject(testString4);
// 输出
console.log('4. 对象属性方法结果:', `"${resultObject}"`);
// 结果
// 对象属性方法结果: "helo wrdjavsciptgmn"


方法5: 使用filter和indexOf

function removeDuplicatesFilter(str) {
    return str.split('').filter((char, index, array) => {
        return array.indexOf(char) === index;
    }).join('');
}

// 测试字符串
const testString5 = "hello world javascript programming";

// 调用
const resultFilter = removeDuplicatesFilter(testString5);
// 输出
console.log('5. filter方法结果:', `"${resultFilter}"`);
// 结果
// filter方法结果: "helo wrdjavsciptgmn"