原生js是前端的基础,如过javascript掌握不好,那后面的三座大山(angularJS,reactJS,vueJS)就要一直学习使用方法也不得其要领,无法对源码进行深入的了解.偶然得到三道面试题,是对应阿里p6的技术水平的,不妨自测一下,看自己是什么水平?
1.在淘宝首页,如何在控制台写一段代码,统计出淘宝首页一共用了多少种html标签?
new Set([...document.querySelectorAll('*')].map(v=>v.tagName)).size;
2.再次统计出使用最多的三种html标签分别是哪三种?
Object.entries([...document.querySelectorAll('*')].map(v=>v.tagName).reduce((res,a) =>{
res[a] = (res[a] || 0)+1
return res
},{})).sort((a,b) => b[1] - a[1]).slice(0,3)
3.利用递归的思想再次实现刚才的两个问题
var map = {};
function fds(node){
if(node.nodeType === 1){
var tagName = node.nodeName;
map[tagName] = map[tagName]? map[tagName] + 1: 1;
}
var children = node.childNodes;
for(var i = 0;i<children.length;i++){
fds(children[i])
}
}
fds(document.body);
console.log(map)
答案不标准,还望有更好的想法可以联系本人,本人必会虚心求教!!!
网友评论