数组求和的各种方法

转载自:https://www.nowcoder.com/questionTerminal/cc3ce199461c4c4cb8f63db61d7eba30


不考虑算法复杂度,用递归做:

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));
     }
}
常规循环:
1
2
3
4
5
6
7
function sum(arr) {
     var s = 0;//注意,如果改为var s,结果是NAN,
     for ( var i=arr.length-1; i>=0; i--) {
         s += arr[i]; //不可以直接var 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;
     });
}
forEach遍历:
1
2
3
4
5
6
7
8
function sum(arr) {
     var s = 0;
     arr.forEach( function (val, idx, arr) {
         s += val;
     }, 0);
  
     return s;
};
eval:
1
2
3
function sum(arr) {
     return eval(arr.join( "+" ));
};


你可能感兴趣的:(js数组,js)