JavaScript 常见笔试算法及代码

Posted wrl_wuqingxue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 常见笔试算法及代码相关的知识,希望对你有一定的参考价值。

  1 /*判断字符串是否为回文*/
  2 /*回文:如果一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome*/
  3 function palindrome(str){
  4     let astr=str.replace(/[^0-9A-Za-z]/g,‘‘).toLowerCase();
  5     let bstr=astr.split("").reverse().join("");
  6     return astr===bstr;
  7 }
  8 
  9 console.log("system 是否为回文?"+palindrome("system"));
 10 
 11 /*返回句子中最长的单词,并计算它的长度*/
 12 function findLongestWord(str){
 13     let arr=str.split(" ").sort(function(a,b){
 14         return b.length-a.length;
 15     });
 16     console.log(arr[0]+" length is "+arr[0].length);
 17 }
 18 
 19 findLongestWord("hello world , this is for test .");
 20 
 21 /*确保字符串的每个单词首字母都大写,其余部分小写*/
 22 function titleCase(str){
 23     let arr=str.toLowerCase().split(" ");
 24     for(let i=0;i<arr.length;i++){
 25         arr[i]=arr[i][0].toUpperCase()+arr[i].substr(1);
 26     }
 27     return arr.join(" ");
 28 }
 29 
 30 console.log(titleCase("this is a test string."));
 31 
 32 /*右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。*/
 33 function largestOfFore(arr){
 34     let _retArr=[];
 35     for(let i=0;i<arr.length;i++){
 36         arr[i].sort(function(a,b){
 37             //升序:a-b;降序:b-a
 38             return a-b;            
 39         });
 40         _retArr.push(arr[i][0]);        
 41     }
 42     return _retArr;
 43 }
 44 
 45 console.log(largestOfFore([[5,9,8,63,52,123],[5,65,85,32,6],[9,8,56,32,41,256],[1,2,3,5,9,3,4]]));
 46 
 47 
 48 /*检查一个字符串(str)是否以指定的字符串(target)结尾。*/
 49 function configEnding(str,target){
 50     let len=target.length;
 51     if(str&&str.length<len)return false;
 52     return (str.substr(-len)==target);
 53 }
 54 
 55 console.log("rain.wuu 是否以 wuu 结尾:"+configEnding("rain.wuu","wuu"));
 56 
 57 /*重复一个指定的字符串 num次,如果num是一个负数则返回一个空字符串。(也可用循环的方式+=计算出最终的字符串)*/
 58 function repeart(str,num){
 59     if(num<0)return "";
 60     //实例化一个空数组(数组大小为num+1),把数组用指定字符串连接
 61     return new Array(num+1).join(str);
 62 }
 63 
 64 console.log("‘rain.wuu ‘重复5次:"+repeart("rain.wuu ",5));
 65 
 66 function truncate(str,num){
 67     /*string.slice(start,end):提取字符串的某个部位,并以新的字符串返回被提取的部分*/
 68     if(str.length<num)return str;
 69     let baseStr=(num<=3?str.slice(0,num):str.slice(0,num-3));
 70     return baseStr+"...";
 71 }
 72 
 73 console.log(truncate("thisisdafdsafdsf",10));
 74 console.log(truncate("this",10));
 75 console.log(truncate("thi",3));
 76 
 77 
 78 /*
 79 把一个数组arr按照指定的数组大小size分割成若干个数组块。
 80 例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];
 81 chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];
 82 */
 83 function chunk(arr,size){
 84     let newArr=[];
 85     for (var i = 0; i < arr.length; i+=size) {
 86         /*slice() 方法可从已有的数组中返回选定的元素。*/
 87         newArr.push(arr.slice(i,i+size));
 88     }
 89     return newArr;
 90 }
 91 
 92 console.log(chunk([1,2,6,5,3,9,8,4,2],4).join("|"));
 93 console.log(chunk(["rrr","eew","ss","vv","b","a"],2).join("|"));
 94 
 95 /*返回一个数组被截断n个元素后还剩余的元素,截断从索引0开始。*/
 96 function slasher(arr,howMany){
 97     if(howMany==0)return arr;
 98     if(howMany>arr.length)return null;
 99     return arr.slice(-(arr.length-howMany));
100 }
101 
102 function slasher01(arr,howMany){
103     if(howMany==0)return arr;
104     if(howMany>arr.length)return null;
105     /*
106         splice()方法用新元素替换旧元素,以此修改数组的内容。
107         由被删除的元素组成的一个数组。如果只删除了一个元素,
108         则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
109     */
110     return arr.splice(howMany,arr.length);
111 }
112 
113 console.log(slasher([we,cc,te,dsd,grvc,fds,dsf],3));
114 console.log(slasher01([we,cc,te,dsd,grvc,fds,dsf],3));
115 
116 /*如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。*/
117 function mutation(arr){
118     //indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
119     //如果要检索的字符串值没有出现,则该方法返回 -1。 
120     //方法一:
121     //return arr[0].toLowerCase().indexOf(arr[1].toLowerCase())>=0;
122     
123     //search() 方法用于检索字符串中指定的子字符串,
124     //或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1
125     //方法二:
126     //return arr[0].toLowerCase().search(arr[1].toLowerCase())>=0;
127     
128     //match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
129     //eval:动态执行脚本
130     //方法三:
131     eval("var reg=/"+arr[1].toLowerCase()+"/");
132     return reg.test(arr[0].toLowerCase());
133 }
134 
135 console.log(mutation(["hello","lLO"]));
136 
137 /*
138 删除数组中的所有假值。
139 javascript中,假值有false、null、0、""、undefined 和 NaN。
140 */
141 
142 function bouncer(arr){
143     /*
144     filter()创建一个新的数组,新数组中的元素是通过检查指定的数组中符合条件的所有元素
145     filter()不会对空数组进行检测
146     filter()不会改变元素数组
147     */
148     return arr.filter(function(a){
149         return a;
150     });
151 }
152 
153 console.log(bouncer([1,0,-1,null,undefined,true,NaN,"","123"]));

 

以上是关于JavaScript 常见笔试算法及代码的主要内容,如果未能解决你的问题,请参考以下文章

Python自动化测试笔试面试时常见的编程题

常见的排序算法总结(JavaScript)

JavaScript常见笔试题分析

iOS常见算法笔试问题

百度算法题笔试——手撕代码总结

应对笔试手写代码,如何准备深度优先算法 & 广度优先算法?