FCC例题
1.Factorialize a Number
计算一个整数的阶乘
function factorialize(num) { var lem=1; for(var i=1;i<=num;i++){ lem*=i; } return lem; } factorialize(5);
2.Check for Palindromes
检查字符串是否是回文
function palindrome(str) { var oldS=str.replace(/[\W_]/g,'').toLowerCase(); //[\W_]将非单词或_去除 var newS=oldS.split('').reverse().join(''); return oldS===newS; } palindrome("A man, a plan, a canal. Panama");
3.Find the Longest Word in a String
找到句子中最长单词,并计算其长度
function findLongestWord(str) { return Math.max(...str.split(' ').map(s=>s.length)); //.map将数组中每个元素替换为其长度并利用max...获取数组最大值(ES6) } findLongestWord("The quick brown fox jumped over the lazy dog");
4.Title Case a Sentence
字符串的每个单词首字母都大写,其余部分小写。
function titleCase(str) { var newStr=str.toLowerCase().split(' '); var arr=[]; for(var i=0;i<newStr.length;i++){ arr.push(newStr[i].slice(0,1).toUpperCase()+newStr[i].slice(1)); } return arr.join(' '); } titleCase("I'm a little tea pot");
5.Confirm the Ending
检查一个字符串(str
)是否以指定的字符串(target
)结尾。
function confirmEnding(str, target) {
return str.substr(-target.length)==target; } confirmEnding("Bastian", "n");
6.Chunky Monkey
把一个数组arr
按照指定的数组大小size
分割成若干个数组块。
function chunk(arr, size) { var newArr=[]; for(var i=0;i<arr.length;i+=size){ newArr.push(arr.slice(i,i+size)); } return newArr; } chunk(["a", "b", "c", "d","s"], 2);
7.Mutations
判断数组第一个字符串元素包含了第二个字符串元素的所有字符。
function mutation(arr) { var newArr1=arr[0].toLowerCase(); var newArr2=arr[1].toLowerCase(); for(var i=0;i<newArr2.length;i++){ if(newArr1.indexOf(newArr2[i])==-1){ return false; } } return true; } mutation(["Alien", "line"]);
8.Falsy Bouncer
删除数组中的所有假值。
function bouncer(arr) {
return arr.filter(Boolean); } bouncer([1, null, NaN, 2, undefined]);
9.Seek and Destroy
实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。
function destroyer(arr) { var arg=[]; for(var i=1;i<arguments.length;i++){ //第一个参数是arr数组,其他参数并未传入 所以用arguments对象将其他参数提取出来, arg.push(arguments[i]); //再利用filter过滤掉匹配的数值 剩余的则是想要的数值! } return arr.filter(function(val){ return arg.indexOf(val)==-1; }); } destroyer(["tree", "hamburger", 53], "tree", 53);
10.Caesars Cipher
移位密码 ROT13
function rot13(str){ var arr=[]; var newA=0; for (var i = 0; i < str.length; i++) { //将字符以编码单元显示 然后进行移位 再返回字符 arr.push(str[i].charCodeAt()); } for (var i = 0; i < arr.length; i++) { if (arr[i]>=65&&arr[i]<=77) { arr[i]=arr[i]+13; }else if(arr[i]>77){ arr[i]=arr[i]+13-26; } arr[i]=String.fromCharCode(arr[i]); } return arr.join(''); } rot13("SERR PBQR PNZC");