數(shù)組求和,一般我們的想法都是去遍歷數(shù)組各項,然后累加。
那就是這樣:
function sumArr(arr){
var sum = 0;
for(var i = 0;i<=arr.length;i++){
sum += arr[i];//前提是arr中各項是數(shù)字,而不是數(shù)字字符串
//如果是數(shù)字字符串: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("+"))
}//直接把他變成各個數(shù)的加法運算字符串
當然還有這種被人廣泛稱贊的函數(shù)式編程的寫法:
function sumArr(arr){
return arr.reduce(function(prev,cur){
return prev + cur;
},0);
}
//reduce方法有兩個參數(shù),一個是callbackfunction(回調(diào)函數(shù)),
//二是設(shè)置prev的初始類型和初始值
有一道筆試題:(由此而總結(jié)了該文章)
給定任意非負整數(shù),反復(fù)累加各位數(shù)字直到結(jié)果為個位數(shù)為止。例如給定非負整數(shù)912,第一次累加9+1+2 = 12, 第二次累加1+2 = 3, 3為個位數(shù),循 環(huán)終止返回3。請編程實現(xiàn)。
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