不考虑算法复杂度,用递归做:
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(
"+"
));
};
|