freeCodeCamp中級算法答案(個人做法)

1米间、通過Math.max()和Math.min()和Array.reduce()來實現(xiàn)數(shù)組中從小到大的累積和 ,例如sumAll([1,5]) 值為10

function sumAll(arr) {
   var arryA=[];
   var max=Math.max.apply(null,arr);
   var min=Math.min.apply(null,arr);
   var sum=0;
   var sumFun=function(max,min){
      for(var i=0;i<(max-min+1);i++){
         arryA.push(min+i);
      }
      console.log(arryA);
      var value=arryA.reduce(function(previousValue,currentValue){
         return previousValue+currentValue;
      });
      return value;
   };
   sum=sumFun(max,min);
   return sum;
}
console.log(sumAll([5, 10]));

關(guān)鍵點熊镣,通過Math.max.apply(null,array)來實現(xiàn)數(shù)組中的最大值判斷

2奔害、數(shù)組去重然后合并不同的數(shù)組
使用Array.indexOf() Array.slice() Array.filter() Array.concat()

function diffArray(arr1, arr2) {
   var newArr = [];
   var arrA=[];
   var arrB=[];
   var arrMiddle=[];
   if(arr1.length===0||arr2.length===0){//判斷是否存在[]的情況
      console.log(arr2.concat(arr1))
   }else{
      arrA=arr1.filter(function(ele,index){
         var flag=true;
         var element=null;
         for(var i=0;i<arr2.length;i++){
            if(ele===arr2[i]){
               flag=false;
               element=ele;
            }
         }
         if(element!=null){
            arrMiddle.push(element);
         }
         return flag;
      });
      if(arrMiddle.length>0){//是否存在各不相同的情況
         var num;
         for(var k=0;k<arrMiddle.length;k++){
            num=arr2.indexOf(arrMiddle[k]);
            arr2.splice(num,1);
         }
         console.log(arr2);
         arrB=arr2;
      }else{
         arrB=arr2;
      }
      newArr=arrA.concat(arrB);
   }
   // Same, same; but different.
   return newArr;
}
console.log(diffArray([1, "calf", 3, "piglet"], [7, "filly"]))

3、分析一個數(shù)組包含的多個json格式對象凳怨,是否含有另一個json格式的對象的內(nèi)容。
Where art thou

function whereAreYou(collection, source) {
   // What's in a name?
   var arr = [];
   // Only change code below this line
   var value=Object.keys(source);
   for(var i=0;i<collection.length;i++){
      if(Object.keys(collection[i]).length>=Object.keys(source).length){
         var flag=true;
         for(var key in source){
            if(collection[i].hasOwnProperty(key) ){
               if(collection[i][key]!=source[key]){
                  flag=false;
               }
            }else{
               flag=false;
            }
         }
         if(flag){
            arr.push(collection[i]);
         }
      }
   }
   // Only change code above this line
   return arr;
}
console.log(whereAreYou([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }))

whereAreYou([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" })should return [{ first: "Tybalt", last: "Capulet" }].
whereAreYou([{ "a": 1 }, { "a": 1 }, { "a": 1, "b": 2 }], { "a": 1 }) should return [{ "a": 1 }, { "a": 1 }, { "a": 1, "b": 2 }].
whereAreYou([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }) should return [{ "a": 1, "b": 2 }, { "a": 1, "b": 2, "c": 2 }].
whereAreYou([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "c": 2 }) should return [{ "a": 1, "b": 2, "c": 2 }].

4是鬼、搜索指定字符串肤舞,替換成指定字符串
Search and Replace

function myReplace(str, before, after) {
   var afterWord;
   if((before.charCodeAt(0)>=65)&&(before.charCodeAt(0)<=90)){
      console.log(1);
      afterWord=after.replace(after.charAt(0),after.charAt(0).toUpperCase());
   }else{
      afterWord=after;
   }
   return str.replace(before,afterWord);
}
console.log(myReplace("Let us go to the store", "store", "mall"))

注意首字母大寫

5、拉丁豬算法均蜜,如果一個字符串包含元音字母aeiou李剖,就把元音字母以前的字符串剪切到末尾,并且加上ay兆龙,如果首字母就是元音字母,就在末尾加上way
Pig Latin

function translatePigLatin(str) {
   var yuanArr=["a","e","i","o","u","A","E","I","O","U"];
   var index=0;
   var result="";
   var word1="";
   var word2="";
   for(var i=0;i<str.length;i++){
      if(yuanArr.indexOf(str[i])>-1){
         index=i;
         break;
      }
   }
   if(index>0){
      word1=str.substr(0,index);
      word2=str.substr(index,str.length-index);
      result=word2+word1+"ay";
   }else if(index===0){
      result=str+"way";
   }
   return result;
}
console.log(translatePigLatin("algorithm"))
console.log(translatePigLatin("california"))

6敲董、DNA配對紫皇,根據(jù)A-T C-G這樣配對
DNA Pairing

function pairElement(str) {
   var arryA=["A","T","C","G"];
   var arryB=["T","A","G","C"];
   var word=str.split("");

   var index=0;
   var arrAll=[];
   for(var i=0;i<word.length;i++){
      for(var j=0;j<arryA.length;j++){
         if(word[i]===arryA[j]){
            index=j;
         }
      }
      var arrOne=[];
      arrOne[0]=word[i];
      arrOne[1]=arryB[index];
      arrAll.push(arrOne);
   }
   return arrAll;
}
console.log(pairElement("GCG"))

pairElement("ATCGA") should return[["A","T"],["T","A"],["C","G"],["G","C"],["A","T"]]

pairElement("TTGAG") should return[["T","A"],["T","A"],["G","C"],["A","T"],["G","C"]].

7、識別一個字符串按照字母順序少了哪一個字母

function fearNotLetter(str) {
   var arryA=[];
   var word=str;
   var index=0;
   var letter;
   var flag=0;
   for(var i=0;i<word.length;i++){
      arryA.push(word.charCodeAt(i));
   }
   flag=arryA[0];
   for(var j=0;j<arryA.length;j++){
      if(arryA[j]!=flag){
         index=arryA[j]-1;//取得不相同字母的上一位腋寨,-1取得失去的那一個
         break;//只要有一個不同聪铺,馬上停止
      }
      flag++;
   }
   if(index!=0){
      letter=String.fromCharCode(index);
   }else{
      letter=undefined;
   }
   return letter;
}
console.log(fearNotLetter("abcdefghjklmno"));
fearNotLetter("abce") should return "d".
fearNotLetter("bcd") should return undefined.

8、判斷參數(shù)是否是布爾類型
Boo who

function booWho(bool) {
   // What is the new fad diet for ghost developers? The Boolean.
   var word=bool;
   if(word===true && word===false){
      return true;
   }else{
      return false;
   }
}
console.log(booWho(null));

9萄窜、多個數(shù)組(包括二維數(shù)組)進行合并去重
Sorted Union

function uniteUnique(arr1, arr2, arr3) {
   var newArray=[];
   var allArray=Array.prototype.concat.apply([], arguments)
   for(var i=0;i<allArray.length;i++){
      if(newArray.indexOf(allArray[i])===-1){
         newArray.push(allArray[i]);
      }
   }
   return newArray;
}
console.log(uniteUnique([1, 3, 2], [1, [5]], [2, [4]]));

重點:由于有多個數(shù)組參數(shù)铃剔,需要用Array.prototype.concat.apply([],arugument)進行合并,用apply的原因是支持第二個參數(shù)為數(shù)組形式的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末查刻,一起剝皮案震驚了整個濱河市键兜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌穗泵,老刑警劉巖普气,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異佃延,居然都是意外死亡现诀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門履肃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仔沿,“玉大人,你說我怎么就攤上這事尺棋》怙保” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烘浦。 經(jīng)常有香客問我抖坪,道長,這世上最難降的妖魔是什么闷叉? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任擦俐,我火速辦了婚禮,結(jié)果婚禮上握侧,老公的妹妹穿的比我還像新娘蚯瞧。我一直安慰自己,他們只是感情好品擎,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布埋合。 她就那樣靜靜地躺著,像睡著了一般萄传。 火紅的嫁衣襯著肌膚如雪甚颂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天秀菱,我揣著相機與錄音振诬,去河邊找鬼。 笑死衍菱,一個胖子當著我的面吹牛赶么,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脊串,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辫呻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了琼锋?” 一聲冷哼從身側(cè)響起放闺,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缕坎,沒想到半個月后雄人,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡念赶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年础钠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叉谜。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡旗吁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出停局,到底是詐尸還是另有隱情很钓,我是刑警寧澤香府,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站码倦,受9級特大地震影響企孩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜袁稽,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一勿璃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧推汽,春花似錦补疑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至暖夭,卻和暖如春锹杈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背迈着。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工竭望, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寥假。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓市框,卻偏偏與公主長得像霞扬,于是被迫代替她去往敵國和親糕韧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,233評論 0 4
  • ??引用類型的值(對象)是引用類型的一個實例。 ??在 ECMAscript 中斧拍,引用類型是一種數(shù)據(jù)結(jié)構(gòu)雀扶,用于將數(shù)...
    霜天曉閱讀 1,052評論 0 1
  • 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的 JavaScript 類型 使用基本類型和基本包裝類型 引用類型的...
    悶油瓶小張閱讀 681評論 0 0
  • 今天是我相親的日子 早早地來到 蜂蜜采收場 打掃整理 然后 與我的小蜜蜂來個吻別 換上新裝 配塊名表 一表人才 帶...
    鐵木真_7bd9閱讀 316評論 6 28
  • 晨光下倚靠在實木陽臺上的女孩 陽光灑在她棕栗色的頭發(fā)上 身旁依偎著皮毛柔順的狗 耷拉睡意朦朧的眼皮 砰 沖出清晨林...
    不留風閱讀 322評論 0 0