freeCodeCamping上javascript基本算法题Basic Algorithm

一:翻转字符串

  function reverseString(str){

    var arr=str.split("");//字符串转换成数组

    arr.reverse();//翻转数组

    return arr.join("")//翻转后数组转换诚字符串

  }

二、计算一个整数的阶乘

  function factorialize(num){

    var  result=1;

    for(var i=1;i<=num;i++){

      result*=num

    }

  return result;

  }

三、检查回文字符串

  function palindrome(str){

    newStr=str.toLowerCase().replace(/[W_]/g/,"");//先把字符串小写,然后用“”替换调字符串中的标点符号及下划线

    var arr=newStr.split("");//字符串转数组

    arr.reverse();//翻转数组

    var str=arr.join("");//翻转后的数组转字符串

    if(str===newStr){

      return true;

    }else{

      return false;

    }

  }

 四、找出一句话中最长的单词。并返回它的长度

  function findLongestWord(str){

    var arr=str.split(" ");//字符串转换成数组

    var list=[];//定义一个数组,接收每个单词的长度

    for(var i=0;i<arr.length;i++){

      list.push(arr[i].length);//循环数组,把每个单词的长度添加到空数组中

    }

    list.sort(function(a,b){//对list进行排序,从小到大

      return a-b;

    });

    str=list[list.length-1];

    return str;

}  

五、过滤一个数组中的假值false,null,0,"",undefined,NAN

  function bouncer(arr){

  function isBe(element){//过滤函数

    return Boolean(element)===true;

  }

   return arr.filter(isBe);

  }

六、把指定的字符串翻译成 pig latin。

  把一个英文单词的第一个辅音或辅音丛移到词尾(元音字母(aeiou)之前的字母全部后移),然后加上后缀 "ay"。

  如果单词以元音开始,你只需要在词尾添加 "way" 就可以了。

function translate(str) {
  yuanyin=['a','e','i','o','u'];
  if((yuanyin.indexOf(str[0]))!=-1){
    return str+'way';
  }
  while((yuanyin.indexOf(str[0]))==-1){
    str=str.substr(1)+str.substr(0,1);
  }
    return str+'ay';
  }

  translate("glove");

 七、从传递进来的字母序列中找到缺失的字母并返回它。如果所有字母都在序列中,返回 undefined。

function fearNotLetter(str) {
  arr=[];
  for(var i=0;i<str.length;i++){
    num=str.charCodeAt(i);//字符转数字
    arr.push(num);
  }
  for(var j=0;j<arr.length-1;j++){
    if(arr[j+1]-arr[j]!==1){
      numLose=arr[j]+1;
      return String.fromCharCode(numLose);//数字转字符串
    }
  }
  return undefined;
}

fearNotLetter("abce");

 八、检查一个值是否是基本布尔类型,并返回 true 或 false。基本布尔类型即 true 和 false。

 

function boo(bool) {

  if(bool===true||bool===false){
    return true;
  }
    return false;
  }

boo(null);

 九、写一个 function,传入两个或两个以上的数组,返回一个以给定的原始数组排序的不包含重复值的新数组。换句话说,所有数组中的所有值都应该以原始顺序被包含在内,但是在最终的数组中不包含重复值。

 

function unite(arr1, arr2, arr3) {
  l=arguments.length;
  arr=[];
  temp=[];

  //先把传入的参数全部合并成一个数组。
  for(var i=0;i<l;i++){
    arr=arr.concat(arguments[i]);
  }

  //合并后的数组,去除重复元素,自留一个。思路:定义一个空数组,把原数组中的元素不断加入空数组中,如果元素已经存在,就不在添加。
  for(var j=0;j<arr.length;j++){
    if(temp.indexOf(arr[j])==-1){
      temp.push(arr[j]);
    }
  }
  return temp;
}

unite([1, 3, 2], [5, 2, 1, 4], [2, 1]);

 十、将字符串转换为 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词。

 

function spinalCase(str) {
  // "It's such a fine line between stupid, and clever."
  // --David St. Hubbins
  str=str.replace(/([A-Z]+)/g,' $1');//在大写字母前加空格
  str=str.replace(/s+/g,'-');//用-代替空格
  str=str.replace(/_+/g,"");//去除下划线_
  arr=str.split("-");
  if(arr[0]==""){
    arr.shift();
  }
  for(var i=0;i<arr.length;i++){
    arr[i]=arr[i][0].toLowerCase()+arr[i].substr(1);
  }
  return arr.join('-');
  }

spinalCase('The_Andy_Griffith_Show');    " thisIsSpinalTap"

原文地址:https://www.cnblogs.com/daacheng/p/7843789.html