Free Code Camp 练习总结 —— Intemediate Algorithm Scripting 基本知识

我会把FCC上面学到东西分享给大家,希望给学前端的朋友有帮助,欢迎大家留言提出宝贵的意见

#276  Sum All Numbers in a Range

我们会传递给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。

最小的数字并非总在最前面。

function sumAll(arr) {
  var min = Math.min(arr[0],arr[1]); //函数返回一组数中的最小值
  var max = Math.max(arr[0],arr[1]); // 函数返回一组数中的最大值
  var arrOpen = []; //创建空的数组
  for(var i=min ;i<=max;i++){ //i赋值初始值,进行for循环遍历
    arrOpen.push(i); //然后进行填充
  }
  
  return arrOpen.reduce((res,cul) => { //方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值。
    return res + cul ;                  
  });
}

sumAll([1, 4]);
 

#277 Diff Two Arrays

 比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素。换言之,返回两个数组的差异。

function diff(arr1, arr2) {
  var newArr = [];
  // Same, same; but different.
  var arr3 = arr1.concat(arr2); // 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
   function isContain(value)  //写一个方法找出arr3,arr1和arr2在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
  {
    
    return arr1.indexOf(value)==-1 ||  arr2.indexOf(value)==-1;
  }
  
  newArr = arr3.filter(isContain); //方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素
  return newArr;
}

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

#278  Roman Numeral Converter

将给定的数字转换成罗马数字。

function convert(num) {
 var numArr = [1,4,5,9,10,40,50,90,100,400,500,900,1000];
 var strArr = ["I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"];
 var result = "";
  while(num>0){
    var i = numArr.length;
    while(i >= 0){
      if(num >= numArr[i])
        {
          result += strArr[i];
          num -= numArr[i];
        }else{
          i--;
          
        }
    }
  }
  
 return result;
}

convert(100);
 

#279 Where art thou

写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对(第二个参数)的所有对象的数组。如果返回的数组中包含 source 对象的属性-值对,那么此对象的每一个属性-值对都必须存在于 collection 的对象中。

function where(collection, source) {
  var arr = [];
  // What's in a name?
  var keys = Object.keys(source);
  arr = collection.filter(function(item){
   for(var i= 0;i<keys.length;i++)
     {
       if(!item.hasOwnProperty(keys[i])|| item[keys[i]] !== source[keys[i]]) //方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性
         {
           return false;
         }
     }
    return true;
  });
  return arr;
  
}

where([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
 

#280  Search and Replace

使用给定的参数对句子执行一次查找和替换,然后返回新句子。

第一个参数是将要对其执行查找和替换的句子。

第二个参数是将被替换掉的单词(替换前的单词)。

第三个参数用于替换第二个参数(替换后的单词)。

注意:替换时保持原单词的大小写。例如,如果你想用单词 "dog" 替换单词 "Book" ,你应该替换成 "Dog"。

如果你被难住了,记得使用 Read-Search-Ask尝试与他人结伴编程、编写你自己的代码。

这是一些对你有帮助的资源:

function myReplace(str, before, after) {
  if(before[0] === before[0].toUpperCase()){  //toUpperCase大写转化为小写
    after = after[0].toUpperCase() + after.slice(1);  //slice方法通过删除现有元素和/或添加新元素来更改一个数组的内容。
  }
  str = str.replace(before,after);
  return str;
}

myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");
 

猜你喜欢

转载自blog.csdn.net/youyouxiong/article/details/81637958