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");

 

posted @ 2017-03-10 12:03  Ruge  阅读(129)  评论(0编辑  收藏  举报