不考虑算法复杂度,用递归做:
1 2 3 4 5 6 7 8 9 10 | function sum(arr) { var len = arr.length; if (len == 0){ return 0; } else if (len == 1){ return arr[0]; } else { return arr[0] + sum(arr.slice(1));//slice() 方法从已有的数组中返回选定的元素。 } } |
常规循环:
1 2 3 4 5 6 7 | function sum(arr) { var s = 0; for ( var i=arr.length-1; i>=0; i--) { s += arr[i]; } return s; } |
函数式编程 map-reduce:
1 2 3 4 5 | function sum(arr) { return arr.reduce( function (prev, curr, idx, arr){ return prev + curr;//reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值 }); } |
forEach遍历:
//forEach方法中的function回调有三个参数:第一个参数是遍历的数组内容,第二个参数是对应的数组索引,第三个参数是数组本身
arr.forEach( function (value,index,array){ array[index] == value; //结果为true sum+=value; }); return sum; }; |
eval:
1 2 3 | function sum(arr) { return eval(arr.join( "+" )); }; |