算法题
1.实现range函数,range(1,10,3)返回[1,4,7,10],range('A','F',2),返回['A','C','E'];
考察点:String.fromCharCode(str)与str.charCodeAt()的用法;
函数:
function range(a,b,step){
if(!a || !b)return;
var returnarr = [a];
var i,numA = a,numB = b,is16 = false;
if(isNaN(a)){
is16 = true;
numA = a.charCodeAt();
numB = b.charCodeAt();
}
for(i = numA; i < numB;){
if(i + step <= numB){
if(is16){
returnarr.push(String.fromCharCode(i + step));
i += step;
}else{
returnarr.push(i + step);
i += step;
}
console.log(i);
}
}
return returnarr;
}
2.实现数组集内自数组集合的值和大于某个数
考察循环嵌套
函数:
function getMinLen(arr,n){
var minlen = 0;
for(var i = 0;i < arr.length;i++){
var sum = 0,index = 0;
for(var j = i ; j < arr.length;j++){
sum += arr[j];
index++;
if(sum < n){
}else{
//minlen.push(index);
if(minlen == 0 || minlen > index){
minlen = index;
}
break;
}
}
}
return minlen;
}
3.reduce实现map方法
reduce的参数(total,currentval,index,arr)
function getsum(total,num,index,arr){
arr[index] = num * num;
return arr;
}
var arr = [1,2,3,4,5]
console.log(arr.reduce(getsum));
网友评论