You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:如何从字符串中提取重复字符并生成新字符串?求多种方案

几种去除字符串重复字符的实现方法

先明确需求:从原字符串中生成新字符串,每个字符仅保留首次出现的实例,后续重复字符全部剔除(对应你给出的示例效果)。以下是几种适合新手理解的实现方式:

方法1:嵌套循环(符合你猜测的思路)

通过两层循环手动检查字符是否重复,是最基础的实现方式:

const str = "love to learn javascript";
let str2 = "";

// 外层循环遍历原字符串的每个字符
for (let i = 0; i < str.length; i++) {
  let isDuplicate = false;
  // 内层循环检查当前字符是否已经在结果字符串中
  for (let j = 0; j < str2.length; j++) {
    if (str[i] === str2[j]) {
      isDuplicate = true;
      break;
    }
  }
  // 非重复字符才添加到结果里
  if (!isDuplicate) {
    str2 += str[i];
  }
}

console.log(str2); // 输出 "love tarnjscip"

方法2:数组+includes方法(更简洁)

用数组记录已出现的字符,借助includes方法简化重复判断:

const str = "love to learn javascript";
const seenChars = [];
let str2 = "";

// 遍历原字符串的每个字符
for (const char of str) {
  // 如果字符没在已记录数组里,就添加进去
  if (!seenChars.includes(char)) {
    seenChars.push(char);
    str2 += char;
  }
}

console.log(str2); // 输出 "love tarnjscip"

方法3:Set数据结构(ES6简洁写法)

利用Set自动去重的特性,一行核心代码搞定:

const str = "love to learn javascript";
// 字符串转Set去重 → 转数组 → 拼接成字符串
const str2 = [...new Set(str)].join("");

console.log(str2); // 输出 "love tarnjscip"

注:ES6及以上版本的Set会保留元素的插入顺序,刚好匹配需求。

方法4:对象记录出现情况(高效写法)

用对象的键存储已出现字符,判断速度比数组更快,适合处理长字符串:

const str = "love to learn javascript";
const seenChars = {};
let str2 = "";

for (const char of str) {
  // 若对象中没有该字符的记录,就标记并添加到结果
  if (!seenChars[char]) {
    seenChars[char] = true;
    str2 += char;
  }
}

console.log(str2); // 输出 "love tarnjscip"

内容的提问来源于stack exchange,提问作者mariette eve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:34:55