首页 > 其他分享 >写一个方法计算出页面中HTML使用最多的标签是哪一个

写一个方法计算出页面中HTML使用最多的标签是哪一个

时间:2024-12-11 09:44:03浏览次数:2  
标签:const tagCounts 标签 mostFrequentTag HTML tagName 页面

function mostFrequentTag(htmlString) {
  // 1. 解析 HTML 字符串
  const parser = new DOMParser();
  const doc = parser.parseFromString(htmlString, 'text/html');

  // 2. 遍历所有元素节点
  const tagCounts = {};
  const allElements = doc.querySelectorAll('*'); // 选择所有元素

  for (let i = 0; i < allElements.length; i++) {
    const tagName = allElements[i].tagName.toLowerCase();
    tagCounts[tagName] = (tagCounts[tagName] || 0) + 1;
  }

  // 3. 找到出现次数最多的标签
  let mostFrequentTag = null;
  let maxCount = 0;

  for (const tagName in tagCounts) {
    if (tagCounts[tagName] > maxCount) {
      mostFrequentTag = tagName;
      maxCount = tagCounts[tagName];
    }
  }

  return mostFrequentTag;
}


// 示例用法:
const html = `
<!DOCTYPE html>
<html>
<head>
  <title>Example</title>
</head>
<body>
  <h1>Heading</h1>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
  <div>
    <span>Span 1</span>
    <span>Span 2</span>
  </div>
</body>
</html>
`;

const mostUsedTag = mostFrequentTag(html);
console.log("Most frequently used tag:", mostUsedTag); // Output: p


// 处理空 HTML 字符串的情况
const emptyHTML = "";
const mostUsedTagEmpty = mostFrequentTag(emptyHTML);
console.log("Most frequently used tag (empty HTML):", mostUsedTagEmpty); // Output: null



// 处理无效 HTML 的情况 (例如,缺少结束标签) -  DOMParser 会尽力解析
const invalidHTML = "<div><span>Test</span>";
const mostUsedTagInvalid = mostFrequentTag(invalidHTML);
console.log("Most frequently used tag (invalid HTML):", mostUsedTagInvalid); //  Output: div (or span, depending on how the parser handles the invalid HTML)


代码解释:

  1. 解析 HTML: 使用 DOMParser 将 HTML 字符串解析成 DOM 树。 这使得我们可以使用 DOM 方法来遍历 HTML 结构。

  2. 遍历元素: querySelectorAll('*') 选择文档中的所有元素。 循环遍历这些元素,并将每个标签名(转换为小写)及其出现次数存储在 tagCounts 对象中。

  3. 找到最频繁的标签: 迭代 tagCounts 对象,跟踪出现次数最多的标签。

  4. 返回结果: 返回出现次数最多的标签名。

改进和注意事项:

  • 错误处理: 上面的代码包含了对空 HTML 字符串的处理。 可以添加更健壮的错误处理,例如检查 DOMParser 是否成功创建了文档。 无效的 HTML(例如,缺少结束标签)可能会导致 DOMParser 以意外的方式解析 HTML,因此根据你的需求,你可能需要添加额外的验证或清理步骤。

  • 性能: 对于非常大的 HTML 文档,此代码的性能可能会成为一个问题。 如果需要更高的性能,可以考虑使用流式 HTML 解析器或其他优化技术。

  • 特定标签: 如果只想计算特定标签的出现次数(例如,只计算 divp 标签),可以修改 querySelectorAll 选择器。

这个改进的版本提供了更强大的错误处理和空 HTML 输入处理,使其更适用于各种场景。

标签:const,tagCounts,标签,mostFrequentTag,HTML,tagName,页面
From: https://www.cnblogs.com/ai888/p/18598654

相关文章

  • 如何在易优EyouCms中管理TAG标签?
    在易优EyouCms中,管理TAG标签是优化网站SEO和提高文章分类管理的重要环节。以下是详细的步骤,指导您如何在易优EyouCms中管理TAG标签:进入后台管理:打开浏览器,输入您的易优EyouCms后台管理地址,例如 https://yourdomain.com/admin,并登录您的管理员账号。导航到更多功能:登录......
  • FastAdmin 前端页面传参
    如果我们需要自己在控制器中透传数据到JS中去,则可以使用控制器的assignconfig方法来透传,使用如下$this->assignconfig('demo',['name'=>'名称']);然后我们就可以在JS中使用Config.demo.name来获取对应的数据那么你的问题也就可以先在控制器中使用assignconfig来渲染,如$this->a......
  • 微信H5页面如何更新缓存?
    微信H5页面缓存问题一直比较头疼,因为微信内置浏览器内核的更新策略和缓存机制比较复杂,不容易控制。以下是一些常用的更新缓存的策略,前端开发中可以根据实际情况选择使用:1.文件名添加版本号或哈希值:这是最常用的方法,也是最有效的方法之一。通过在文件名后面添加版本号(例如inde......
  • 进入编辑页面时,如何把光标聚焦到第一个input?
    要让光标在页面加载时自动聚焦到第一个input元素,有很多方法,以下是几种常见且推荐的做法:1.使用autofocus属性(HTML5)这是最简单直接的方法。在第一个<input>元素中添加autofocus属性即可。浏览器加载页面后会自动将光标聚焦到该元素。<inputtype="text"autofocus><......
  • css如何去掉i标签默认的斜体?
    要移除标签默认的斜体样式,可以使用以下CSS方法:font-style:normal;:这是最直接和推荐的方法。它将字体样式设置为正常,从而覆盖默认的斜体。i{font-style:normal;}font-style:inherit;:如果标签的父元素没有设置斜体样式,那么使用inherit可以继承父元......
  • 举例说明只用html和css如何使得一个列表编号倒序?
    HTML和CSS本身无法直接实现列表编号倒序。ol元素的reversed属性可以实现倒序编号,但这依赖于HTML的功能,而不是纯粹的CSS。要仅使用HTML和CSS实现视觉上的倒序编号效果,你需要一些技巧,最常见的是使用CSS的counter-reset和counter-increment属性结合伪元素::befo......
  • 为什么代码中两个`display`属性为`inline-block`的元素之间有多余字符(包括换行、制表
    display:inline-block元素之间的空隙是由HTML源代码中的空格、换行符和制表符引起的。浏览器会将这些空白字符渲染成一个空格,就像普通的文本一样。由于inline-block元素像行内元素一样排列,它们之间的空格也会被保留并显示出来。解决方案:移除HTML源代码中的空白字符:......
  • Springboot+vue仿腾讯在线会议系统,支持在线会议(包括语音和投屏)以及文字聊天功能,最近
    支持在线会议(包括语音和投屏)以及文字聊天功能,最近完成的项目,算是比较小众的项目,功能比较完善,美中不足的就是页面ui设计一般,可先看项目的完整演示项目演示:https://www.bilibili.com/video/BV1ALsre3Epm/小众项目,拿来做毕设简直是嘎嘎乱杀,项目质量是很好可以保证的,大家可以看......
  • Exp 智能协同管理系统-部门管理前端页面开发
    一、需求分析页面功能提供部门信息的展示功能,数据以表格形式呈现,包含序号、部门名称、最后操作时间、操作(编辑和删除)列。用户可通过新增、编辑和删除功能,实现对部门数据的管理。数据动态加载,支持实时更新,确保部门信息的准确性。功能实现细节部门展示:从后端接口获取所有部......
  • 【JavaEE初阶】HTML
    ......