javascript代码实例教程-[FreeCodeCamp-JavaScript]IntermediateAlgorithm

发布时间:2019-01-15 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-[FreeCodeCamp-JavaScript]IntermediateAlgorithm脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

在freecodeCamp上学习js进行到中级算法部分了,这里记录一下,方便后面查看。
1.Sum All Numbers in a Range
我们会传递给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。
最小的数字并非总在最前面。

注意:

Math.min(val1[,val2,……,valn]),返回元素val1,val2,……valn中的最小值 Math.max(val1[,val2,……,valn]),返回元素val1,val2,……valn中的最大值

arr.reduce(callback,[inITialValue])

callback执行数组中每个值的函数,包含四个参数(previousValue, currentValue, index, array) PReviousValue指上一次调用回调返回的值,或者是提供的初始值(initialValue) currentValue数组当前处理的元素 index当前元素在数组中的索引 array调用reduce的数组 initialValue可选,作为第一次调用callback第一个参数 [0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
});————–返回10=0+1+2+3+4 [0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
}, 10);返回20=10+0+1+2+3+4 这个函数的使用暂时还不太熟,像这里提示中给出了这个函数,但我没用,后面要加强学习
 function sumAll(arr) {   //存储最后返回的值   VAR num=0;   //挑选出arr数组中较小的值,作为循环的起点   var i=Math.min(arr[0],arr[1]);   //挑选出arr数组中较大的值,作为循环的终点   while(i<=Math.max(arr[0],arr[1])){     num+=i;     i++;   }    return num;   }  sumAll([1, 4]);

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

 function diff(arr1, arr2) {   var newArr = [];   // Same, same; but different.   //在arr2中挑出arr1中没有的元素   var a1=arr1.filter(function(item,index,array){     return (arr2.indexOf(item)<0);   });   //在arr1中挑出arr2中没有的元素   var a2=arr2.filter(function(item,index,array){     return (arr1.indexOf(item)<0);   });   //合并数组中各自独有的部分a1和a2   newArr=a1.concat(a2);    return newArr; }  diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);

3.roman Numeral Converter
将给定的数字转换成罗马数字。
所有返回的 罗马数字 都应该是大写形式。

分析:

这里首先要定义好数字和罗马数字之间的对应数组romanMatrix 采用递归的方法 这个题目比较有亮点,后期还需要复习
 //定义部分数字和罗马数字之间的对应关系数组 var romanMatrix=[   [1000,&#39;m'],   [900,'CM'],   [500,'D'],   [400,'DC'],   [100,'C'],   [90, 'XC'],   [50, 'L'],   [40, 'XL'],   [10, 'X'],   [9, 'IX'],   [5, 'V'],   [4, 'IV'],   [1, 'I'] ]; function convert(num) {   //给定数字为0时,返回空值   if(num===0)     return '';   //递归找出给定数字对应的罗马数字   for(var i=0;i=romanMatrix[i][0])       return romanMatrix[i][1]+convert(num-romanMatrix[i][0]);   } }  convert(88);

4.Where art thou
写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对(第二个参数)的所有对象的数组。如果返回的数组中包含 source 对象的属性-值对,那么此对象的每一个属性-值对都必须存在于 collection 的对象中。
例如,如果第一个参数是 [{ First: “Romeo”, last: “Montague” }, { first: “Mercutio”, last: null }, { first: “Tybalt”, last: “Capulet” }],第二个参数是 { last: “Capulet” },那么你必须从数组(第一个参数)返回其中的第三个对象,因为它包含了作为第二个参数传递的属性-值对。
分析:

先循环保存source中key值和对应value值 再在collection中遍历比较collection[i]中对应key值和value值是否与source中的相等 若相等,就push到arr数组中,最终返回arr
 function where(collection, source) {   var arr = [];   // What's in a name?   //循环保存source中key值   var key_val="";   //循环保存source中key值对应value,即source[key]   var value_val="";   //循环取出source中key和value   for(var key in source){     key_val=key;     value_val=source[key];   }   //循环比较collection中是否包含value=source[key]   for(var i=0;i

5.SeArch and Replace 使用给定的参数对句子执行一次查找和替换,然后返回新句子。 第一个参数是将要对其执行查找和替换的句子。 第二个参数是将被替换掉的单词(替换前的单词)。 第三个参数用于替换第二个参数(替换后的单词)。 注意:替换时保持原单词的大小写。例如,如果你想用单词 “dog” 替换单词 “Book” ,你应该替换成 “Dog”。

//判断字符串str中首字符是否大写 function isFirstUpPEr(str){   if(str.charAt(0)==str.charAt(0).toUpperCase())     return true;   else     return false; } //将字符串str中首字符替换成大写形式 function firstToUpper(str){   return str.replace(str.charAt(0),str.charAt(0).toUpperCase()); } function myReplace(str, before, after) {     //如果即将被替换的单词before中首字符为大写形式   //则将替换before的单词after首字符替换成大写形式   if(isFirstUpper(before)){     after=firstToUpper(after);   }   //将str中目标单词before用after替换   str=str.replace(before,after);   return str; }  myReplace("A quick brown fox Jumped over the lazy dog", "Jumped", "leaped");

6.Pig Latin
把指定的字符串翻译成 pig latin。
Pig Latin 把一个英文单词的第一个辅音或辅音丛(consonant cluster)移到词尾,然后加上后缀 “ay”。
如果单词以元音开始,你只需要在词尾添加 “way” 就可以了。

 function translate(str) {   //定义元音字母组成的字符数组   var vowel=['a','e','i','o','e'];   //保存str中开头的辅音丛的长度   var i=0;   var newstr=str;   //循环求出字符串str中开头的辅音丛的长度i   while(i

7.DNA Pairing DNA 链缺少配对的碱基。依据每一个碱基,为其找到配对的碱基,然后将结果作为第二个数组返回。 Base pairs(碱基对) 是一对 AT 和 CG,为给定的字母匹配缺失的碱基。 在每一个数组中将给定的字母作为第一个碱基返回。 例如,对于输入的 GCG,相应地返回 [[“G”, “C”], [“C”,”G”],[“G”, “C”]] 字母和与之配对的字母在一个数组内,然后所有数组再被组织起来封装进一个数组。

function pair(str) {   //以碱基对的配对关系定义map键值对   var map={     'A':'T',     'T':'A',     "G":'C',     'C':'G'    };   var arr=[];   var i=0;   var len=str.length;   while(i

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

function fearNotLetter(str) {   var len=str.length;   //str中第一个字符的Unicode值   var start=str.charCodeAt(0);   //str中最后一个字符的Unicode值   var end=str.charCodeAt(len-1);   var arr=[];   var j=0;   for(var i=start;i<=end,j

9.Boo who 检查一个值是否是基本布尔类型,并返回 true 或 false。 基本布尔类型即 true 和 false。 注意: typeof operand

typeof操作符返回操作数的类型(字符串) operand是一个表达式,表示对象或原始值,返回其类型 例如:typeof 3.14 === ‘number’;typeof “bla” === ‘string’;typeof true === ‘boolean’; typeof new String(“abc”) === ‘object’;typeof Math.sin === ‘function’; typeof undefined === ‘undefined’;typeof [1, 2, 4] === ‘object’;
function boo(bool) {   // What is the new fad diet for Ghost developers? The Boolean.   //typeof bool 返回bool的类型,即boolean   return typeof bool==='boolean'; }  boo(1);

10.Sorted Union
写一个 function,传入两个或两个以上的数组,返回一个以给定的原始数组排序的不包含重复值的新数组。
换句话说,所有数组中的所有值都应该以原始顺序被包含在内,但是在最终的数组中不包含重复值。
非重复的数字应该以它们原始的顺序排序,但最终的数组不应该以数字顺序排序。
总结:

arguments很神奇,可以直接检索到函数中传递的参数个数 arr.indexOf(char),功能上类似于java中的contains函数 可以用于查找arr数组中是否包含某个char元素,有就返回对应索引;没有就返回-1
 function unite() {   var arr=[];   //unite中参数总数目(即数组个数)   var len=arguments.length;   //控制遍历哪个数组(arguments[i],i可取0~len-1)   var i=0;     while(i

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-[FreeCodeCamp-JavaScript]IntermediateAlgorithm全部内容,希望文章能够帮你解决javascript代码实例教程-[FreeCodeCamp-JavaScript]IntermediateAlgorithm所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。