JS求页面中出现最多次数的标签,并求出出现次数

想到之前面试过的一条面试题。就是求出页面中出现次数最多 的标签,并求出最大值。因为出现最多 的标签可能是同时存在多个相同。比如span和div都是出现10次并且是最大值,

所以把出现标签用放到数组里面去。。写下个人的解决方法。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- <meta http-equiv="X-UA-Compatible" content="ie=edge"> -->
    <title>求出页面中出现次数最多的标签</title>
</head>

<body>
    <span></span>
    <span></span>
    <span></span>
    <div>
        <div>
            sdf
        </div>
    </div>
    <div></div>
</body>
<script>
    var element = document.getElementsByTagName("*");//获取所有标签
    var obj = {}, max = 0, maxArr = [];
    for (var index = 0; index < element.length; index++) {
        if (!obj[element[index].tagName])
            obj[element[index].tagName] = 1;//如何Obj没有这个标签的属性则为1
        else
            obj[element[index].tagName]++;//否则就++
    }
    ///循环一遍obj求出最大值
    for (const key in obj) {
        // 页面中可能 有多个相同多的最大值标签
        if (obj[key] == max) {
            maxArr.push(key)
        }
        // 出现最多次数时
        if (obj[key] > max) {
            max = obj[key];
            maxArr = [];
            maxArr.push(key)
        }

    }
    console.log('页面中出现最多的标签是maxArr里面的几个值,出现次数是' + max)
</script>

</html>

上面的结果maxArr是['SPAN','DIV']。

其实这种题目和求一个字符串中出现最多的字符和次数都是一样原理

posted @ 2020-01-09 16:17  H柷H  阅读(1079)  评论(0编辑  收藏  举报