用javascript可实现轻量可靠的html文本去重工具:基于set去重,配合domparser提取textcontent,按行或分词处理,全程本地运行不传服务器。

直接用 JavaScript 就能做出轻量、可靠、不传服务器的 HTML 文本去重工具,根本不需要后端或第三方服务。
用 Set 做去重核心,别手写循环
很多人照搬老代码写 quchong(array) 这种双重循环函数,性能差还容易漏判空字符串或空白符。现代浏览器里,Set 是唯一该用的去重原语——它自动忽略重复值,且对字符串、数字、布尔值都有效。
-
Set对"abc"和"abc "视为不同项,所以必须先标准化:统一用.trim()清首尾空格 - 大小写敏感?加
.toLowerCase();要保留原始格式?用Map存key: word.toLowerCase(), value: word - 别把整个 HTML 字符串丢进
Set—— 先按行切分(.split(/\r\n|\r|\n/)),再逐行处理
提取文本前先清理 HTML 结构噪声
直接对原始 HTML 字符串去重,会把 <div>、<code><script></script>、注释甚至 URL 参数都当“文本”处理,结果毫无意义。真正要的是用户可见内容。
- 用
DOMParser解析字符串:const doc = new DOMParser().parseFromString(htmlStr, 'text/html') - 用
doc.body.textContent拿纯文本(比innerText更稳定,不依赖 CSS 渲染状态) - 如果只要某类标签内容(比如所有
<strong></strong>),改用doc.querySelectorAll('strong')+el.textContent遍历 - 记得过滤掉空行和纯空白行:
line.trim() !== ''
按行去重还是按词去重?看你的输入格式
工具行为取决于用户粘贴进来的是什么:是带换行的列表(如关键词、URL 列表),还是大段混排文章?两者策略完全不同。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
- 如果是“每行一项”的结构(最常见场景),用
.split(/\r\n|\r|\n/)分割后去重,再.join('\n')拼回去 - 如果是想提取所有独立词汇(如做词频统计),得用正则拆词:
textContent.match(/[\u4e00-\u9fa5a-zA-Z0-9\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A]+/g) || [] - 别用
.split(' ')拆中文——中文词之间没空格,会把整段当一个“词”
本地运行不发请求,但要注意 DOMParser 的兼容性边界
这个方案完全跑在浏览器里,不上传数据,但有几个实际限制容易被忽略:
-
DOMParser在 IE10+ 和所有现代浏览器都支持,但解析失败时不会抛错,而是返回含<parsererror></parsererror>的文档,需检查doc.querySelector('parsererror') - 超长 HTML(>10MB)可能触发内存警告,建议加长度截断提示:
if (htmlStr.length > 2 * 1024 * 1024) {...} - 含非法实体(如
©缺少分号)会被静默修正,若需严格保留原始字符,得先用正则预替换或改用textarea纯文本模式
真正的难点不在去重逻辑本身,而在于怎么定义“什么是需要去重的文本”——是渲染后看到的,还是源码里的?是否要跨标签合并?这些边界一旦模糊,工具就只能凑合用。










