记cvte前端笔试

前几天CVTE提前批笔试,看完题目感觉还行,前面的题在js高级程序设计教程部分有提到过,下面主要说一下后面的两道编程题:

其中第一道大概要求是统计一个html页面中各个标签出现的次数,本人自己的大概思路如下:

1,首先先获得程序中的所有标签的个数,得到之后做这么一个分析:

2(两层循环),类似于冒泡排序算法,这里假设我先抓取第一个元素,让我的第一个元素跟后面的元素进行比较,假如相同,那么把这个元素压入temp数组中,并在原来的队列里做减一操作,避免后续比较重复;

3.一直比较下去,直到最后,发现再无重复,就把原先的那个也压入temp数组,这里不压入会导致结果少1,就跟你点名一样,点人时不算上自己会少一个人;

4.最后把temp压入tag数组中,并做清零操作,进入下一个循环

废话不多说,上代码如下:

<script type="text/javascript">  
  var tags = document.getElementsByTagName('*');        //获取所有标签节点
  
  var j=tag.length;                                     //统计全部节点个数
  console.log(j);
  
  var tagsArr = [];                                     //创建空数组缓冲区
  
function countTag(){ 
 
  for (var i = 0; i < tags.length; i++) {
	  
    tagsArr.push((tags[i].tagName).toLowerCase());      //对标签节点做格式调整,全部转化为小写字母
  }  
  // console.log(tagsArr);  
  
  //定义一个数组用于存放相同的元素
  
  var temp = [];                                       //临时数组用于统计在每次循环里相同标签的个数
  
  
  var tag =[];                                         //定义一个空数组用于存放每一个标签,接收每次循环来自temp的值
  
  for (var i = 0; i < tagsArr.length; i++)  {          //开始循环,思路与冒泡排序类似	    
    for (var j = i+1; j < tagsArr.length+1; j++) {  
      if (tagsArr[i] == tagsArr[j]) {                  //取第一个,然后与后面的比较,看有多少重复
        temp.push(tagsArr[j]);  
        tagsArr.splice(j,1);                           //如果重复,在 tagsArr中删掉该项,并把它压入temp中
        j--;                                           //删除后tagsArr发生变化,记得进行-1操作
      }  
	  
      if (j == tagsArr.length -i) {                   //当不断比较到达了数组的尾部时
        temp.push(tagsArr[i]);                        
        tagsArr.splice(i,1);                          //到底了,压入该比较项进temp,并在tagsArr中删除该标签
        i--;  
        tag.push(temp);  
        temp = [];                                      //temp的值交给tag后,置空,进入下一个循环,本次循环信息在tag中
      }  
    }  
  }
  
  return tag;  
}  


console.log(countTag());  
</script> 

第二道题是关于template.js模板引擎的问题的,要求是根据要求编出一个template引擎:

比如这样子,

var tpl = document.getElementById('tpl').innerHTML;

template(tpl, {list: [{name: "yan"},{name: "haijing"}]}); //json数组格式

输出格式:

<ul>
    <li>yan</li>
    <li>haijing</li>
</ul

那么根据题目中的意思,template引擎大概如下所示:

<script id="tpl" type="text/html">
<ul>
    <%for(var i = 0; i < list.length; i++) {%>
    <li><%:=list[i].name%></li>
    <%}%>
</ul>
</script>

这里可以用一个type=”text/html”的script标签存放模板,或者放到字符串中


题目跟这个不太一样,不过道理都差不多哈。
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值