首页 > 代码库 > Freecodecamp 前端初级算法(个人向)
Freecodecamp 前端初级算法(个人向)
freecodecamp 初级算法地址戳这里
Reverse a String
翻转字符串
1 function reverseString(str) {2 str=str.split("").reverse().join("");3 return str;4 }5 6 reverseString("hello")
Factorialize a Number
计算一个整数的阶乘
1 function factorialize(num) { 2 if(num>1){ 3 num=num*factorialize(num-1); 4 }else{ 5 num=1; 6 } 7 return num; 8 } 9 10 factorialize(5);
Check for Palindromes
如果给定的字符串是回文,返回true
,反之,返回false
。
1 function palindrome(str) { 2 // Good luck! 3 var str1=str.toLowerCase().replace( /[\(\)\s.,/_-]/g,"" ); 4 var str2=str1.split("").reverse().join(""); 5 return str1==str2; 6 } 7 8 palindrome("eye");
Find the Longest Word in a String
找到提供的句子中最长的单词,并计算它的长度。
1 function findLongestWord(str) { 2 var arr=str.split(" "); 3 var max=0; 4 for(let a of arr){ 5 max=a.length>max?a.length:max; 6 } 7 return max; 8 } 9 10 findLongestWord("The quick brown fox jumped over the lazy dog");
Title Case a Sentence
确保字符串的每个单词首字母都大写,其余部分小写。
1 function titleCase(str) { 2 var arr=str.split(" "); 3 for(var i in arr){ 4 var len=arr[i].length; 5 var word=arr[i].toLowerCase(); 6 7 if( len==1 ){ 8 arr[i]=word.toUpperCase(); 9 }else{10 arr[i]=word.substring(0,1).toUpperCase()+word.substring(1,len);11 }12 13 }14 str=arr.join(" ");15 return str;16 }17 18 titleCase("I‘m a little tea pot");
Return Largest Numbers in Arrays
右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。
1 function largestOfFour(arr) { 2 // You can do this! 3 var max=[]; 4 5 for(var i in arr){ 6 let bigger; 7 for(var j in arr[i]){ 8 bigger=bigger?( arr[i][j]>bigger?arr[i][j]:bigger ):arr[i][j]; 9 }10 max.push(bigger);11 }12 return max;13 }14 15 largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
Confirm the Ending
检查一个字符串(str
)是否以指定的字符串(target
)结尾
1 function confirmEnding(str, target) {2 // "Never give up and good luck will find you."3 // -- Falcor4 var str1=str.replace( new RegExp(target,"g"),"|");5 var flag=str1.lastIndexOf("|");6 return flag==str1.length-1?true:false;7 }8 9 confirmEnding("Bastian", "n");
Repeat a string repeat a string
重复一个指定的字符串 num
次,如果num
是一个负数则返回一个空字符串。
1 function repeat(str, num) { 2 // repeat after me 3 var str1=str; 4 if( num<=0 ){ 5 str1=""; 6 } 7 8 while( num>1 ){ 9 str1+=str;10 num--;11 }12 return str1;13 }14 15 repeat("abc", 3);
Truncate a string
如果字符串的长度比指定的参数num
长,则把多余的部分用...
来表示。
1 function truncate(str, num) { 2 // Clear out that junk in your trunk 3 var index; 4 if( str.length>num ){ 5 if ( num<=3 ){ 6 index=num; 7 }else{ 8 index=num-3; //-3是减去...的长度 9 }10 str=str.slice(0,index)+"...";11 }12 13 return str;14 }15 16 truncate("A-tisket a-tasket A green and yellow basket", 11);
Chunky Monkey
把一个数组arr
按照指定的数组大小size
分割成若干个数组块。
1 function chunk(arr, size) { 2 // Break it up. 3 var arr2=[]; 4 var max=Math.ceil( arr.length/size ); 5 6 for(var i=0;i<max;i++){ 7 arr2.push( arr.slice(i*size,i*size+size) ); 8 } 9 return arr2;10 }11 12 chunk(["a", "b", "c", "d"], 2);
Slasher Flick
返回一个数组被截断n
个元素后还剩余的元素,截断从索引0开始。
1 function slasher(arr, howMany) {2 // it doesn‘t always pay to be first3 arr.splice(0,howMany);4 return arr;5 }6 7 slasher([1, 2, 3], 2);
Mutations
如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。
1 function mutation(arr) { 2 var main=arr[0].toLowerCase(); 3 var search=arr[1].toLowerCase().split(""); 4 for(var a in search){ 5 if( main.indexOf( search[a] )==-1 ){ 6 return false; 7 } 8 9 }10 return true;11 }12 13 mutation(["hello", "hey"]);
Falsy Bouncer
删除数组中的所有假值。
1 function bouncer(arr) { 2 // Don‘t show a false ID to this bouncer. 3 return arr.filter(isTrue); 4 } 5 6 function isTrue(ele){ 7 if( ele ){ 8 return ele; 9 }10 11 }12 13 bouncer([7, "ate", "", false, 9]);
Seek and Destroy
实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。
1 function destroyer() { 2 // Remove all the values 3 var arr=[].shift.apply( arguments ); 4 var vals=arguments; 5 6 var arr2=arr.filter(function(ele){ 7 for(var i=0,l=vals.length;i<l;i++){ 8 if( ele==vals[i] ){ 9 return false;10 } 11 }12 return true;13 });14 console.log(arr2);15 return arr2;16 }17 18 19 20 destroyer([1, 2, 3, 1, 2, 3], 2, 3);
Where do I belong
先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引。
1 function where(arr, num) { 2 // Find my place in this sorted array. 3 arr.push(num); 4 var index=arr.sort(function(a,b){ 5 return a-b; 6 }).indexOf(num); 7 return index; 8 } 9 10 where([40, 60], 50);
Caesars Cipher
下面我们来介绍风靡全球的凯撒密码Caesar cipher
,又叫移位密码。
写一个ROT13函数,实现输入加密字符串,输出解密字符串。
1 function rot13(str) { // LBH QVQ VG! 2 var arr=str.split(" "); 3 var result=[]; 4 for(var i in arr){ 5 result.push( word(arr[i],13) ); 6 } 7 return result.join(" "); 8 } 9 10 function word(str,num){11 var res="";12 for(var i=0,l=str.length;i<l;i++){13 res+=String.fromCharCode( char(str.charCodeAt(i),num) );14 }15 return res;16 }17 function char(old,add){18 //65-90 A-Z19 //97-122 a-z20 var res;21 var cha;22 if( old>=65 && old<=90 ){23 cha=old+add-90;24 res=cha<=0?old+add:65+cha-1;25 }else if( old>=97 && old<=122 ){26 cha=old+add-122;27 res=cha<=0?old+add:97+cha-1;28 }else{29 res=old;30 }31 32 return res;33 34 }35 36 37 38 // Change the inputs below to test39 rot13("SERR PBQR PNZC");
Freecodecamp 前端初级算法(个人向)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。