//获取页面所有标签
let allTags = document.querySelectorAll("*")
let obj = {};let tags = []
//给每个标签计数存在对象中
allTags.forEach(item=>{
if(!obj[item.tagName]){
obj[item.tagName] = 1;
}else{
obj[item.tagName]++;
}
})
//将对象中的键和值绑定存在数组中
for(const key in obj){
tags.push([key,obj[key]]);
}
//使用数组排序将二维数组进行排序,虽然用到了内层的值但是排序只会移动外层的时间复杂度是O(nlogn)由排序决定
tags.sort((a,b)=>{
return b[1] - a[1]
})
//输出出现次数前三的标签
tags.slice(0,3).forEach(item=>{
console.log(item[0],"\n");
})
//使用冒泡排序更好,时间复杂度是O(kn) k为常数
// let temp = []
//因为每次外层循环都可以找到最大的元素,所以找前三只需要3次循环即可
// for(let i = 0;i<3;i++ ){
// for(let j=i+1;j<tags.length;j++){
// if(tags[i][1]<tags[j][1]){
// temp = tags[i];
// tags[i]= tags[j];
// tags[j] = temp
// }
// }
// console.log(arr[i]0)
// }
topK问题,找出页面前K个元素一般来说K远远小于总值 如:JS获取一个页面出现次数前三的的标签,
最新推荐文章于 2022-08-04 20:20:02 发布