數組求和,通常咱們的想法都是去遍歷數組各項,而後累加。
那就是這樣:編程
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的初始類型和初始值
有一道筆試題:(由此而總結了該文章)code
給定任意非負整數,反覆累加各位數字直到結果爲個位數爲止。例如給定非負整數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