比较两个数组,而后返回一个新数组,该数组的元素为两个给定数组中全部独有的数组元素。换言之,返回两个数组的差别。html
function diff(arr1, arr2) { var a1=arr1.filter(function(val){ return arr2.indexOf(val)< 0; }); var a2=arr2.filter(function(val){ return arr1.indexOf(val)< 0; }); return a1.concat(a2); } diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);
将给定的数字转换成罗马数字。
全部返回的 罗马数字 都应该是大写形式。
可参考Here数组
function convert(num) { var nums = [1000,900,500,400,100,90,50,40,10,9,5,4,1]; var romans =["m","cm","d","cd","c","xc","l","xl","x","ix","v","iv","i"]; var str = ''; nums.forEach(function(item,index,array){ while(num >= item){ str += romans[index]; num -= item; } }); return str.toUpperCase(); } convert(36);
写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对(第二个参数)的全部对象的数组。若是返回的数组中包含 source 对象的属性-值对,那么此对象的每个属性-值对都必须存在于 collection 的对象中。ui
例如,若是第一个参数是 [{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }],第二个参数是 { last: "Capulet" },那么你必须从数组(第一个参数)返回其中的第三个对象,由于它包含了做为第二个参数传递的属性-值对。翻译
//法一 function where(collection, source) { var keys = Object.keys(source); return collection.filter(function(obj){ return keys.every(function(item){ return obj.hasOwnProperty(item) && obj[item] === source[item]; }); }); } //法二 function where(collection, source) { var keys = Object.keys(source); return collection.filter(function(obj){ return keys.every(function(item){ return obj.hasOwnProperty(item) && obj[item] === source[item]; }); }); } where([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
使用给定的参数对句子执行一次查找和替换,而后返回新句子。第一个参数是将要对其执行查找和替换的句子。第二个参数是将被替换掉的单词(替换前的单词)。第三个参数用于替换第二个参数(替换后的单词)。
注意:替换时保持原单词的大小写。例如,若是你想用单词 "dog" 替换单词 "Book" ,你应该替换成 "Dog"。code
//法一 function myReplace(str, before, after) { if(before[0] === before[0].toUpperCase()){ after = after[0].toUpperCase() + after.slice(1); } str = str.replace(before,after); return str; } //法二 function myReplace(str, before, after) { var re = /^[A-Z]/; if(re.test(before.charAt(0))){ after = after.charAt(0).toUpperCase() + after.slice(1); } str = str.replace(before,after); return str; } myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");
把指定的字符串翻译成 pig latin。
Pig Latin 把一个英文单词的第一个辅音或辅音丛(consonant cluster)移到词尾,而后加上后缀 "ay"。
若是单词以元音开始,你只须要在词尾添加 "way" 就能够了。htm
function translate(str) { var myStr = ''; var regex = /[aeiou]/gi; if(str[0].match(regex)){ myStr = str + 'way'; }else{ var index = str.indexOf(str.match(regex)[0]); myStr = str.substr(index) + str.substring(0,index) + 'ay'; } return myStr; } translate("consonant");//onsonantcay
DNA 链缺乏配对的碱基。依据每个碱基,为其找到配对的碱基,而后将结果做为第二个数组返回。
Base pairs(碱基对) 是一对 AT 和 CG,为给定的字母匹配缺失的碱基。
在每个数组中将给定的字母做为第一个碱基返回。
例如,对于输入的 GCG,相应地返回 [["G", "C"], ["C","G"],["G", "C"]]
字母和与之配对的字母在一个数组内,而后全部数组再被组织起来封装进一个数组。对象
function pair(str) { var arr = str.split(''); var pair = ''; return arr.map(function(item){ switch(item){ case 'C': pair = 'G'; break; case 'G': pair = 'C'; break; case 'A': pair = 'T'; break; case 'T': pair = 'A'; break; } return [item,pair]; }); } pair("GCG");
从传递进来的字母序列中找到缺失的字母并返回它。
若是全部字母都在序列中,返回 undefined。排序
法一: var arr = str.split(''); for(var i = 0;i < arr.length;i++){ var minus = arr[i+1].charCodeAt() - arr[i].charCodeAt();/后项减去前项/ if( minus > 1){ return String.fromCharCode(arr[i].charCodeAt()+1); } } 法二: function fearNotLetter(str) { var compare = str.charCodeAt(0),missing; str.split('').map(function(item,index){ if(str.charCodeAt(index) === compare){ ++ compare; }else{ missing = String.fromCharCode(compare); } }); return missing; } fearNotLetter("abce");
检查一个值是不是基本布尔类型,并返回 true 或 false。
基本布尔类型即 true 和 false。ip
function boo(bool) { return typeof bool === 'boolean'; } boo(true);
写一个 function,传入两个或两个以上的数组,返回一个以给定的原始数组排序的不包含重复值的新数组。
例如:unite([1, 3, 2], [5, 2, 1, 4], [2, 1]) 应该返回 [1, 3, 2, 5, 4]。字符串
function unite(arr1, arr2, arr3) { var args = Array.from(arguments); var arr = args.reduce(function(prev,cur){ return prev.concat(cur); }); return arr.filter(function(item,index,arr){ return arr.indexOf(item) === index; }); } unite([1, 3, 2], [5, 2, 1, 4], [2, 1]);
将字符串中的字符 &、<、>、" (双引号), 以及 ' (单引号)转换为它们对应的 HTML 实体。
法一 function convert(str) { str = str.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">") .replace(/"/g,""").replace(/'/g,"'"); return str; } convert("Dolce & Gabbana"); 法二: function convert(str) { var htmlEntities={ '&':'&', '<':'<', '>':'>', '\"':'"', '\'':''', }; return str.split('').map(function(entity){ return htmlEntities[entity] || entity; }).join(''); } convert("Dolce & Gabbana");