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

如何实现统计字符串中不同单词数量的方法?

统计字符串中不同单词的数量的实现方法

最简洁实现:利用Set自动去重

Set是专门存储唯一值的数据结构,能直接帮你过滤重复元素,快速实现需求:

function countUniqueWords(str) {
  // 去除首尾空白后,按任意数量的空白字符分割成单词数组
  const words = str.trim().split(/\s+/);
  // 转成Set去重,返回Set的大小就是唯一单词数
  return new Set(words).size;
}

处理大小写、标点的进阶版本

如果需要忽略大小写(比如"Hello"和"hello"算同一个),或者过滤单词里的标点,可以先做预处理:

function countUniqueWords(str) {
  // 转小写后,用正则匹配单词(支持带撇号的单词,比如don't)
  const words = str.toLowerCase().match(/\b[\w']+\b/g) || [];
  return new Set(words).size;
}

手动实现去重(兼容旧环境)

如果不能用Set,用对象记录已出现的单词也能实现:

function countUniqueWords(str) {
  const words = str.trim().split(/\s+/);
  const seenWords = {};
  let uniqueCount = 0;

  for (const word of words) {
    // 单词未被记录过,就标记并计数+1
    if (!seenWords[word]) {
      seenWords[word] = true;
      uniqueCount++;
    }
  }

  return uniqueCount;
}

补充说明

你之前用map遍历的思路不对——map的作用是转换数组元素,不是用来比较元素是否重复。要实现去重统计,直接遍历+记录已出现元素,或者用Set才是更高效的方式。

内容的提问来源于stack exchange,提问作者Robert L.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:15:38