JAVA分用户统计标签点击量_你真的知道怎么统计一个页面使用了多少标签吗?...

bcd96a31b3f116100fb5c148300b5fd9.png

其实感觉工作,需要的是什么?技术?责任心?还是良好的人际关系。

问大家一个问题: 如果你的项目今天要上线,产品的P0项目,但是测试说没环境,让找产品。产品说我不管,你找测试。你该怎么办?请在评论区告诉在下

好了,闲话不说,问一个很简单很简单的问题?如果让你统计一个页面中有多少种标签,每种多少个,最多的是那几个?你该怎么办?

复制代码

本文主要用到的方法:扩展运算符、new Set()、Array.reduce() 、Array.sort()、Object.entries() 、Array.slice()、Array.map()、Array.join()

正文开始

随便找一个链接:https://search.bilibili.com/all?keyword=vue%E6%BA%90%E7%A0%81

复制代码

1、首先获取当前页面的所有标签

document.getElementsByTagName("*")

复制代码

得到结果,这一步应该都是统一的。

938fb562d0f2ccb205932752e6144f69.png

2、得到当前页面一共有多少种标签。【不用循环遍历】

// 首先第一步得到的是一个伪数组,我们需要降其转为数组

[...document.getElementsByTagName("*")].map(item => item.tagName) //1430个标签

//然后 利用new Set() 的优势对数组去重

new Set([...document.getElementsByTagName("*")].map(item => item.tagName)) // 27种标签

//最后利用 new Set().size 得出数组的长度就是标签的种类的总数

new Set([...document.getElementsByTagName("*")].map(item => item.tagName)).size //27

复制代码

26944826b626d0c17c4bb1fa59ede5e6.png

3、如何获得每种标签有多少个呢? 简单,Array.reduce() Array.sort()

//reduce,初始化给出一个空对象,对每种标签进行计数

[...document.getElementsByTagName("*")].map(item => item.tagName).reduce((prev, next) => {next in prev ? prev[next] +=1 : prev[next] = 1; return prev}, {})

//结果是有了,但是看着不太好,给个顺序排列吧。

Object.entries([...document.getElementsByTagName("*")].map(item => item.tagName).reduce((prev, next) => {next in prev ? prev[next] +=1 : prev[next] = 1; return prev}, {}))

Object.entries([...document.getElementsByTagName("*")].map(item => item.tagName).reduce((prev, next) => {next in prev ? prev[next] +=1 : prev[next] = 1; return prev}, {})).sort((a,b)=> b[1]-a[1])

复制代码

4996471c4bb9b2f2cc83700e21410045.png

4、好了,胜利近在眼前,获取前三的标签并得出有多少个!Object.entries() Array.slice() Array.map() Array.join()

//首先对上述得出的数组截取前三。

Object.entries([...document.getElementsByTagName("*")].map(item => item.tagName).reduce((prev, next) => {next in prev ? prev[next] +=1 : prev[next] = 1; return prev}, {})).sort((a,b)=> b[1]-a[1]).slice(0,3)

// 然后对前三的输出进行转化成我们想要的文案

Object.entries([...document.getElementsByTagName("*")].map(item => item.tagName).reduce((prev, next) => {next in prev ? prev[next] +=1 : prev[next] = 1; return prev}, {})).sort((a,b)=> b[1]-a[1]).slice(0,3).map(v => `${v[0]}:${v[1]}个`)

//最后将数组转为字符串

Object.entries([...document.getElementsByTagName("*")].map(item => item.tagName).reduce((prev, next) => {next in prev ? prev[next] +=1 : prev[next] = 1; return prev}, {})).sort((a,b)=> b[1]-a[1]).slice(0,3).map(v => `${v[0]}:${v[1]}个`).join(',')

复制代码

26956704167f28e6e6eb8b591d78e4b0.png

本文使用 mdnice 排版

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值