CVTE前端笔试 编程题交流

最后两题大家都是什么思路
PO上我代码 多多指教
第一题
function test(){ var str = document.documentElement.outerHTML.toString(); var arr = document.getElementsByTagName("*"); var arr2={}; for(var i=0;i<arr.length;i++){ var name = arr[i].tagName; var num = document.getElementsByTagName(name).length; arr2[name] = num;
    } var max = 0; var maxName = ""; for(item in arr2){ if(arr2[item] >= max){ max = arr2[item]; maxName = item;
        }
    } console.log("出现次数最多的标签:<" + maxName.toLowerCase() + ">-出现次数" + max);
} function template(str){ if(str == null || str == "") return function(){ return "请输入模板";
        }; var reg = /^(.*)<%=(.+)%>!$/; if(reg.test(str)){ var res = reg.exec(str); var replace = res[2].trim();
    }else{ return function(){ return "模板不正确";
        };
    } return function(yourObj){ //传入的对象没有值返回空字符串  if(yourObj == null || yourObj == ""){ return "请输入对象";
        } if(yourObj[replace]){ console.log(res[1] + yourObj[replace]) return res[1] + yourObj[replace];
        }else{ return "你要替换的属性不存在";
        }
    }
}

全部评论
题目1 求html文档出现次数最多的标签 题目2 写一个模板替换函数template var complied = template("welcome to <%= location %>!"); console.log(complied({"location":"CVTE"}));=>welcome to cvte
2 回复 分享
发布于 2017-07-30 10:27
把题目说一下吧
点赞 回复 分享
发布于 2017-07-30 04:46
      var str = document.documentElement.innerHTML.toString();       var tags = document.getElementsByTagName("*");       var arrTags = Array.prototype.slice.call(tags);       var mapStore = new Map();       for (var i = 0; i < arrTags.length; ++i){         if (mapStore.has(arrTags[i].tagName)){           var n = mapStore.get(arrTags[i].tagName);           mapStore.set(arrTags[i].tagName, n+1);         }else{           mapStore.set(arrTags[i].tagName, 1);         }       }       var index = 1, str;       for (var [key, value] of mapStore){         if (value > index){           str = key;         }       }       console.log(`the tag is ${str}, and the num is ${mapStore.get(str)}`);
点赞 回复 分享
发布于 2017-07-29 22:21
话说他这个代码他们是要拿到后台运行吗?
点赞 回复 分享
发布于 2017-07-29 21:32
第一题: function getMaxNode(){ var node=document.getElementsByTagName("*"); var nodeList={}; for(var i=0;i<node.length;i++){ var type=node[i].nodeName; if(nodeList[type]){ nodeList[type]+=1; }else{ nodeList[type]=1; } } var max=0; for(var key in nodeList){ if(nodeList[key]>max){ max=nodeList[key]; } } return max; } 第二题: function template(temp){ var reg=/<%= ([0-9a-zA-Z]+)%>/g; var result=reg.exec(temp); var tempObj={}; while(result){ tempObj[result[1]]=result[0]; result=reg.exec(temp); } return function(obj){ for(var key in obj){ temp=temp.replace(tempObj[key],obj[key]); } return temp; } }
点赞 回复 分享
发布于 2017-07-29 20:55
咱俩思路是一样的,只不过第二题,我不确定tempate函数的参数 str会包含几个待替换的变量,例子中是只有一个,但是我还是按照多个来做得。例如 template("aa <%=localtion %> bb <%= user%> cc <%= another %> ...") 我是不是想太多了==
点赞 回复 分享
发布于 2017-07-29 20:36

相关推荐

06-03 15:32
点赞 评论 收藏
分享
评论
点赞
9
分享

创作者周榜

更多
牛客网
牛客企业服务