首页 > 代码库 > 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 前端初级算法(个人向)