我会把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");