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 常见笔试算法及代码的主要内容,如果未能解决你的问题,请参考以下文章