脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-[FreeCodeCamp-JavaScript]IntermediateAlgorithm,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。
在freecodeCamp上学习js进行到中级算法部分了,这里记录一下,方便后面查看。
1.Sum All Numbers in a Range
我们会传递给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。
最小的数字并非总在最前面。
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
将给定的数字转换成罗马数字。
所有返回的 罗马数字 都应该是大写形式。
//定义部分数字和罗马数字之间的对应关系数组 var romanMatrix=[ [1000,'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” },那么你必须从数组(第一个参数)返回其中的第三个对象,因为它包含了作为第二个参数传递的属性-值对。
分析:
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;i5.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(i7.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(i8.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,j9.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
arguments很神奇,可以直接检索到函数中传递的参数个数 arr.indexOf(char),功能上类似于java中的contains函数 可以用于查找arr数组中是否包含某个char元素,有就返回对应索引;没有就返回-1
写一个 function,传入两个或两个以上的数组,返回一个以给定的原始数组排序的不包含重复值的新数组。
换句话说,所有数组中的所有值都应该以原始顺序被包含在内,但是在最终的数组中不包含重复值。
非重复的数字应该以它们原始的顺序排序,但最终的数组不应该以数字顺序排序。
总结: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,请注明来意。