如何用JavaScript实现匹配字符串替换,为标题指定词添加高亮样式?
实现标题文本高亮函数
这里给你优化后的实现方案,能直接返回你需要的带高亮样式的标题字符串:
const highlightHeading = (title, title_highlighted) => { // 将高亮词转为Set,提升匹配效率 const highlightWords = new Set(title_highlighted.trim().split(/\s+/)); // 拆分原标题为词汇数组 const titleWords = title.trim().split(/\s+/); // 遍历处理每个词汇,匹配到的用span包裹 const processedWords = titleWords.map(word => { if (highlightWords.has(word)) { return `<span style={{ color: "orange" }}>${word}</span>`; } return word; }); // 拼接成完整的h1标签字符串并返回 return `<h1>${processedWords.join(' ')}</h1>`; }; // 测试示例 console.log(highlightHeading("Lorem ipsum dolor sit amet", "ipsum amet"));
关键优化点:
- 用
Set存储高亮词汇,相比嵌套循环,查找匹配的时间复杂度从O(n*m)降到O(n),效率更高 - 使用
map方法遍历原标题词汇,更简洁地生成处理后的数组 - 最后直接拼接成目标格式的字符串返回,而不是只打印结果
测试后会输出你需要的结果:
<h1>Lorem<span style={{color: "orange"}}>ipsum</span> dolor sit<span style={{color: "orange"}}>amet</span></h1>
内容的提问来源于stack exchange,提问作者Kiron
相关产品推荐
相关产品推荐

