代碼實現(xiàn)
let a = [...document.getElementsByTagName("*")].map(value => value.tagName);
function getMaxEle(iter, amount = 1) {
// 統(tǒng)計出現(xiàn)個數(shù)的對象
let tagCount = {};
// 假設(shè)排行前amount個的元素已經(jīng)產(chǎn)生
let maxCount = [...new Array(amount)].map(v => ({"count": 0}));
// 遍歷可迭代對象
iter.forEach(function (tagName) {
// 如果該標簽名稱已經(jīng)出現(xiàn)過則加一陈莽,否則就是一
tagCount[tagName] = ++tagCount[tagName] || 1;
// 遍歷maxCount,查看當前tagName的標簽出現(xiàn)數(shù)量是否符合前幾的資格虽抄,如果滿足添加到相應位置
for (let i = 0; i < maxCount.length; i++) {
if (tagCount[tagName] > maxCount[i]["count"]) {
maxCount[i]["tag"] = tagName;
maxCount[i]["count"] = tagCount[tagName];
break;
}
}
});
return {
// 返回統(tǒng)計結(jié)果
maxCount, tagCount
};
}
console.log(getMaxEle(a, 3));