数组求和的方法

对于数组求和有多种方法:

1:递归方法

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));
  }
}
var a=new Array(1,2,3,4,5);
document.write(sum(a));

输出结果:

该方法的原理是利用slice方法一直获取子函数中的第一个元素,达到遍历数组中所有元素的效果。

2:常规循环

function sum(arr){
  var a=0;
  for(var i=0;i     a+=arr[i];
  }
  return a;
}
基础,没什么好讲的

3:函数式编程 map-reduce

reduce的用法是将函数组中,函数必须接受2个参数,把结果继续和序列的下一个元素做累计,如

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)

function sum(arr){
  return arr.reduce(function(prep,curr,idx,arr){
    return prep+curr;
  });
}
var a=new Array(1,2,3,4);
document.write(sum(a));

结果为:

4:forEach遍历

定义: forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。其实forEach()是Array下的一个方法. 
注意: 无法使用break等语句跳出遍历, 直到所有元素都传递给调用的函数, 但是可以使用抛出异常, 提前终止循环 

function sum(arr){
  var s=0;
  arr.forEach(function(val,idx,arr){
    s+=val;
  });
  return s;
}
var a=new Array(1,2,3,4);
document.write(sum(a));

输出结果:

5:eval方法

function sum(arr) {
    return eval(arr.join("+"));
};
var a=new Array(1,2,3,4);
document.write(sum(a));

你可能感兴趣的:(JavaScript)