转自牛客网。
题目:
题目描述
计算给定数组 arr 中所有元素的总和
输入描述:
数组中的元素均为 Number 类型
输入例子:
sum([ 1, 2, 3, 4 ])
输出例子:
10
不考虑算法复杂度,用递归做:
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;
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;
});
}
|
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( "+" ));
};
|