一、Sum All Numbers in a Range 求两数之间的所有数字的总和
思路:
1、求最大值
2、求最小值
3、循环求和
代码如下:
function sumAll(arr) {
var min = Math.min(arr[0],arr[1]),
max =Math.max(arr[0],arr[1]),
r = 0;
for(var i=min;i<=max;i++){
r+=i;
}
return r;
}
sumAll([1, 4]);
二、Diff Two Arrays 求两个数组的非共同元素
思路:
循环过滤出来
代码如下:
function diffArray(arr1, arr2) {
var newArr = [];
// Same, same; but different.
newArr = arr1.filter(function(value){
return arr2.indexOf(value) < 0;
});
return newArr.concat(arr2.filter(function(value){
return arr1.indexOf(value) < 0;
}));
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
三、Roman Numeral Converter 把数字转化成为罗马数字
思路:
1、把各位数字逐个拼接
代码如下:
function convertToRoman(num) {
var arr_0_9 = ['','I','II','III','IV','V','VI','VII','VIII','IX'],
arr_10_90 = ['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC'],
arr_100_900 = ['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM'],
arr_1000_9000 = ['','M','MM','MMM','MMMM','MMMMM','MMMMMM','MMMMMMM','MMMMMMMM','MMMMMMMMM'];
var str = num.toString(),
str2Arr = [],
r = '';
if(str.length<4){
switch (str.length){
case 3:
str = '0'+str;
break;
case 2:
str = '00'+str;
break;
case 1:
str = '000'+str;
break;
default:
str = '0000';
}
}
str2Arr = str.split('');
for(var i=0;i<4;i++){
switch (i){
case 3:
r+= arr_0_9[parseInt(str2Arr[i])];
break;
case 2:
r+= arr_10_90[parseInt(str2Arr[i])];
break;
case 1:
r+= arr_100_900[parseInt(str2Arr[i])];
break;
default:
r+= arr_1000_9000[parseInt(str2Arr[i])];
}
}
return r;
}
convertToRoman(36);
四、Wherefore art thou 查找对象
思路:
1、循环查找
代码如下:
function whatIsInAName(collection, source) {
// What's in a name?
var arr = [],
keys = Object.keys(source),
kLen = keys.length;
// Only change code below this line
collection.forEach(function(obj){
var match = true;
for(var i=0;i<kLen;i++){
if(!obj.hasOwnProperty(keys[i])){
match = false;
break;
}else{
if(source[keys[i]] != obj[keys[i]]){
match = false;
break;
}
}
}
if(match){
arr.push(obj);
}
});
// Only change code above this line
return arr;
}
whatIsInAName([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
五、Search and Replace 查找替换
代码如下:
function myReplace(str, before, after) {
var c = before.charAt(0),
newAfter='';
if(c<'A' || c>'Z'){
newAfter = after.charAt(0).toLowerCase() + after.substr(1);
}else{
newAfter = after.charAt(0).toUpperCase() + after.substr(1);
}
var reg = new RegExp(before,"g");
return str.replace(reg,newAfter);
}
myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");
六、Pig Latin 把词转化为猪拉丁语
代码如下:
function translatePigLatin(str) {
var vStr = 'aeiou',
ends = ['way','ay'],
i = 0,
cStr='';
while(str.charAt(i)!==undefined && vStr.indexOf(str.charAt(i))<0){
cStr += str.charAt(i);
i++;
}
if(cStr.length>0){
return str.substr(cStr.length) + cStr + ends[1];
}else{
return str + ends[0];
}
}
translatePigLatin("consonant");