数组求和,一般我们的想法都是去遍历数组各项,然后累加。
那就是这样:
function sumArr(arr){
var sum = 0;
for(var i = 0;i<=arr.length;i++){
sum += arr[i];//前提是arr中各项是数字,而不是数字字符串
//如果是数字字符串:sum += Number(arr[i]);
}
return sum;
}
又或者是forEach遍历:
function sumArr(arr){
var sum = 0;
arr.forEach(function(val,index,arr){
sum += val;
})
return sum;
}
还有一种比较黑科技的写法:
function sumArr(arr){
return eval(arr.join("+"))
}//直接把他变成各个数的加法运算字符串
当然还有这种被人广泛称赞的函数式编程的写法:
function sumArr(arr){
return arr.reduce(function(prev,cur){
return prev + cur;
},0);
}
//reduce方法有两个参数,一个是callbackfunction(回调函数),
//二是设置prev的初始类型和初始值
有一道笔试题:(由此而总结了该文章)
给定任意非负整数,反复累加各位数字直到结果为个位数为止。例如给定非负整数912,第一次累加9+1+2 = 12, 第二次累加1+2 = 3, 3为个位数,循 环终止返回3。请编程实现。
function add(num){
if(isNaN(num)) return;
if(num<10) return num
const res=num.toString().split('').reduce((sum,value)=>{
return sum+Number(value)
},0)
return add(res);
}
add(345);
3