解题思路
- 获取页面中所有的标签DHTML;
- 根据对象的引用类型不同计算同一种标签的数量,并将标签类型和对应的数量存入一个临时对象中;
- 将临时对象转换成数组,并遍历该数组,根据标签的数量进行从大到小排序;
- 返回排序后的第一个值;
maxTagCount(){
// 1.获取页面中所有的标签DHTML
let tags = document.querySelectorAll('*') // 得到一个伪数组
// 2. 根据对象的引用类型不同计算同一种标签的数量,并将标签类型和对应的数量存入一个临时对象中
let tempArr = Array.from(tags).map(node => node.nodeName) // 2.1 将所有的标签名存入到一个临时数组中
let tempObj = {} // 2.2 创建一个临时对象,遍历tempArr将标签类型和对应的数量存入其中
tempArr.forEach(item => {
if(!tempObj[item]) { // 如果临时对象中没有该标签,则存入,并记为1
tempObj[item] = 1
} else { // 如果已有改标签,则加1
tempObj[item] += 1
}
})
// 3.将临时对象转换成数组,并遍历该数组,根据标签的数量进行从大到小排序;
let newArr = Object.keys(tempObj).sort((a, b) => {
return tempObj[b] - tempObj[a] // 降序排列
})
return newArr[0] // 返回排序后的第一个标签
}