最近前端笔试遇上的笔试题有感
2018-06-24 00:43:38来源:未知 阅读 ()
1.给出一个字符串,显示出字符串里重复次数最多的元素,并显示次数出来
如:"sdoiokasdhdiuwasad"
输出: 出现最多:d 出现次数:4
1 function remenber(str){ 2 var o = {}; 3 for (var i = 0; i < str.length; i++) { 4 if (o[str[i]]) { //char就是对象o的一个属性,o[char]是属性值,o[char]控制出现的次数 5 o[str[i]]++; //次数加1 6 } else { 7 o[str[i]] = 1; //若第一次出现,次数记为1 8 } 9 } 10 console.log(o); //输出的是完整的对象,记录着每一个字符及其出现的次数 11 //遍历对象,找到出现次数最多的字符和次数 12 var max = 0; 13 for (var key in o) { 14 if (max < o[key]) { 15 max = o[key]; //max始终储存次数最大的那个 16 } 17 } 18 for (var key in o){ 19 if (o[key] == max){ 20 //console.log(key); 21 console.log("最多的字符是" + key); 22 console.log("出现的次数是" + max); 23 } 24 } 25 } 26 remenber("sdoiokasdhdiuwasad");
2.给出一个数组,数组中的元素最多可以出现两次
1 function newarr(arr){ 2 var tmp = []; 3 var str = ","; 4 for(var i = 0; i < arr.length; i++){ 5 var sm = str.match(new RegExp(","+arr[i]+",", "g")); 6 if(!sm || sm.length < 2) { 7 tmp.push(arr[i]); 8 str += arr[i] + ","; 9 } 10 } 11 console.log("原数组是:" + arr); 12 console.log("清除后的数组:"+tmp); 13 } 14 newarr([12,34,5,6,32,12,34,56,5,12,34]);
3.给出一个数组,求这个数组的最大和
如[34,5,1,22],输出534221
function a(arr){ var st = []; var res = []; for(var i=0; i < arr.length; i++){ //将数组元素转换为string类型 var arr1 = arr[i].toString(); st.push(arr1); } console.log(st[1][0]); for(var j = 0; j < arr.length-1; j++){ //用冒泡排序将数组的元素的第一个数进行排序的到从小到大的排序 for(var k = 0; k < arr.length-j-1; k++){ if(st[j][0] > st[j+1][0]){ var temp = st[k]; st[k] = st[k+1]; st[k+1] = temp; } } } for(var c = st.length; c >= 0; c--){//将冒泡排完序后的到的数组进行倒序排序 res.push(st[c]); } console.log(res.join(""));//最后合并元素 } a([12,23,34,5]);
4、给一个有序数组创建二叉搜索树
var Array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var Tree = createTree(Array); console.log(Tree); // 构造一个节点 function Node(nodeData, leftData, rightData) { this.nodeData = nodeData; this.leftData = leftData; this.rightData = rightData; } // 每次取中点作为根节点,向左和向右递归 function createTree(array) { if (array.length <= 0) { return null; } else { var mid = parseInt(array.length / 2); var node = new Node(array[mid], null, null); var leftArray = array.slice(0 , mid); var rightArray = array.slice(mid + 1 , array.length ); node.leftData = createTree(leftArray); node.rightData = createTree(rightArray); return node; } }
5、JS快速排序
function quicksort(arr){ if(arr.length <= 1){ return arr; } var mid = Math.floor(arr.length/2); //用于确定中间基数在arr中的位置 var andtwo = arr.splice(mid,1)[0]; //用于作连接left和right两个数组的中间基数 var left = []; var right = []; for(var i = 0; i < arr.length; i++){ if(arr[i] > andtwo){ right.push(arr[i]); }else{ left.push(arr[i]); } } return quicksort(left).concat([andtwo],quicksort(right)); } console.log(quicksort([12,4,43,16,34,76,8,97]));
6、给一个字符串如as-ds-aw-gfde-ioa,用一个函数实现输出结果为as-Ds-Aw-Gfde-Ioa
function toUp(str){ var mixstr = str.split("-");//将str拆分 var res = [mixstr[0]];//创建新数组用于存放转换好的元素,因为第一个不需要转换,所以直接存放进去了 for(var i = 1; i < mixstr.length; i++){ var resone = mixstr[i][0].toUpperCase() + mixstr[i].substring(1,mixstr[i].length);//将str里的单个字符串转换成首字母为大写的形式 res.push(resone); } var outstr = res.join("-"); console.log(outstr); } toUp("as-ds-aw-gfde-ioa");
7、实现一个算法,随机生成指制定长度的字符窜。
比如给定 长度 8 输出 2debl8xp
function randomString(n) { let str = 'abcdefghijklmnopqrstuvwxyz9876543210'; let tmp = ''; for (var i = 0; i < n; i++) { tmp += str.charAt(Math.floor(Math.random() * str.length)); } console.log(tmp); } randomString(8);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:JS正则表达式验证
- js调用刷新界面的几种方式 2020-03-05
- 高性能JavaScript循环语句和条件语句 2020-02-21
- Javascript实现前端简单的路由实例 2019-12-17
- 带你了解JavaScript 2019-10-29
- 浏览器上实现右键菜单的方法 2019-10-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash