记cvte前端笔试

来源:互联网 发布:互联网十云计算概念股 编辑:程序博客网 时间:2024/05/17 09:24

前几天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标签存放模板,或者放到字符串中


题目跟这个不太一样,不过道理都差不多哈。