前端笔试题及资料集锦(三)
2014-09-19 16:34 大额_skylar 阅读(1627) 评论(3) 编辑 收藏 举报先说在前面喔,欢迎大家发现错误,提供更好的方法~共同学习~
(2014阿里巴巴前端笔试题)请补充代码,使mySort()能将传入的参数按从小到大的顺序显示出来。
function mySort(){
var args = new Array();//使用数组作为参数存储容器
请补充你的代码
return args;//返回已经排序的数组
}
var result = mySort(23,44,56,98,1,2,33);//传入的参数不定
console.log(result);//显示结果
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset=utf-8> 5 <title>demo</title> 6 </head> 7 8 <style> 9 10 </style> 11 12 <body> 13 14 <script> 15 function mySort(){ 16 var args = new Array(); 17 var len = arguments.length; 18 for(var i=0;i<len;i++){ 19 args.push(arguments[i]); 20 }
//由于sort()方法对数字排序不尽如人意,给他定义个比较函数 21 function compare(num1,num2){ 22 return num1-num2; 23 } 24 args.sort(compare); 25 return args; 26 } 27 var result = mySort(50,11,15,32,46,78,100,22,9,0); 28 console.log(result); 29 30 </script> 31 </body> 32 </html>
哈哈,最近看秒味视频觉得不错,也顺势做了些讲的题,我还是努力踏踏实实的写写代码,学好基础知识。
嘿嘿,下面来笔面试题第三弹。(字符串part)
一、字符串转驼峰写法,例:'border-bottom-color' --> borderBottomColor
常规做法:以‘-’分割,从第二个单词起首字母大写,join成串。
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset=utf-8> 5 <title>字符串转驼峰</title> 6 </head> 7 <style> 8 9 </style> 10 11 <body> 12 <script> 13 var str = 'border-bottom-color'; 14 /*这里是常规方法*/ 15 function transform(str){ 16 var arr = str.split('-');//[border,bottom,color] 17 for(var i=1;i<arr.length;i++){ 18 arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1); //[border,Bottom,Collor] 19 } 20 return arr.join(''); 21 } 22 console.log(transform(str)); 23 </script> 24 </body> 25 </html>
正则写法:正则匹配
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset=utf-8> 5 <title>字符串转驼峰</title> 6 </head> 7 <style> 8 9 </style> 10 11 <body> 12 <script> 13 var str = 'border-bottom-color'; 14 /*这里是正则方法*/ 15 function transform(str){ 16 //()代表正则中的第一个子项 17 var re = /-(\w)/g; 18 // $0代表正则的整体$1代表正则中的第一个子项 19 return str.replace(re,function($0,$1){ 20 return $1.toUpperCase(); 21 }); 22 } 23 console.log(transform(str)); 24 </script> 25 </body> 26 </html>
二、字符串中出现最多的字符和个数
常规写法:利用对象字面量
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset=utf-8> 5 <title>字符串中出现最多的字符和个数</title> 6 </head> 7 <style> 8 9 </style> 10 11 <body> 12 <script> 13 var str = 'aaaaaakkkkkkaaaaasddd'; 14 function most(str){ 15 //不同的字符在obj中都有个数组 16 /* obj = { 17 a:[], 18 d:[] 19 }*/ 20 var obj = {}; 21 var num = 0; 22 var value = ''; 23 for(var i=0;i<str.length;i++){ 24 //如果obj{}中这个字符对应的数组还没存在的话,那么给他创建个空数组 25 if(!obj[str[i]]){ 26 obj[str[i]] = []; 27 } 28 //把这个字母push进它对应的数组中 29 obj[str[i]].push(str[i]); 30 } 31 for(attr in obj){ 32 if(num<obj[attr].length){ 33 num = obj[attr].length; 34 //obj[attr]数组中的每个字符都是相同的 35 value = obj[attr][0]; 36 } 37 } 38 return '出现次数最多的字符是'+value+'出现了'+num+'次'; 39 } 40 console.log(most(str)); 41 </script> 42 </body> 43 </html>
正则写法:
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset=utf-8> 5 <title>字符串中出现最多的字符和个数</title> 6 </head> 7 <style> 8 9 </style> 10 11 <body> 12 <script> 13 var str = 'kkkkkkkaaakkkkkkaaaaasddd'; 14 function most(str){ 15 //排序,正则匹配子项 16 var arr = str.split(''); 17 arr.sort(); 18 str = arr.join(''); 19 // \1匹配前面相同的,也就是说跟(\w)相同的 20 var re = /(\w)\1+/g; 21 var num = 0; 22 var value = ''; 23 //这里的$0就是找到的重复的整体 24 str.replace(re,function($0,$1){ 25 //alert($0); 26 if(num<$0.length){ 27 num = $0.length; 28 value = $1; 29 } 30 }); 31 return '出现次数最多的字符是'+value+'出现了'+num+'次'; 32 } 33 34 console.log(most(str)); 35 </script> 36 </body> 37 </html>
三、给字符串加千分符
常规解法:里面包含了几个小技巧,还挺巧妙的。先把三位多余的部分从前面拿出来,把后面整3部分逗号分隔,最后把多余的加到前面。
1 var str = '12345432';//->[] 2 function spli(str){ 3 var iNum = str.length%3;//->0,1,2 4 var prev = ''; 5 var arr = []; 6 var iNow = 0; 7 var tmp = ''; 8 //千分号是从后向前三位三位加的,所以把三位余出来的从前面提取到 9 if(iNum !=0){ 10 prev = str.substring(0,iNum); 11 arr.push(prev); 12 } 13 //取到多余部分后面的 14 str = str.substring(iNum); 15 for(var i=0;i<str.length;i++){ 16 iNow++; 17 tmp += str[i]; 18 if(iNow==3 && tmp){ 19 //数组里面放的是三位的数 20 arr.push(tmp); 21 tmp = ''; 22 iNow = 0; 23 } 24 } 25 return arr.join(','); 26 } 27 console.log(spli(str));
正则写法:这个的正则写法比较有难度,要先搞清楚什么事前向声明和反前向声明;
1 /*(?=) :前向声明 2 (?!) :反前向声明 3 var str = 'a(?=)bacad'; 4 var re = //g; 5 str = str.replace(re,'*'); 6 alert(str); 7 */ 8 var str = '112345432'; 9 function spli(str){ 10 var re = /(?=(?!\b)(\d{3})+$)/g; 11 return str.replace(re,','); 12 } 13 console.log(spli(str));
四、返回只包含数字类型的数组,例:'abc234koi45jodjnvi789' --> [234,45,789]
还没有找到除正则外的其他比较好的方法,大家有好方法尽情指出哈。
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset=utf-8> 5 <title>返回只包含数字类型的数组</title> 6 </head> 7 <style> 8 9 </style> 10 11 <body> 12 <script> 13 var str = 'abc234koi45jodjnvi789';//得到[234,45,789] 14 var re = /(\d+)/g; 15 var arr = []; 16 str.replace(re,function($0,$1){ 17 return arr.push(parseInt($1)); 18 }); 19 console.log(arr); 20 /*var str = 'abc234koi45jodjnvi789'; 21 console.log(str.split(/[a-z]+/g));*/ 22 </script> 23 </body> 24 </html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?