题目描述
计算给定数组 arr 中所有元素的总和
输入描述:
数组中的元素均为 Number 类型
代码实现:
/**
* 最普通的遍历求值
* @param arr
* @returns {number}
*/
var sum = function(arr) {
var length = arr.length,
sum = 0;
for (var i = 0; i < length; i++) {
sum += arr[i];
}
return sum;
};
/**
* 使用累加方法reduce
* 这里列出了所有的函数形参
* @param arr
* @returns {*}
*/
var sum2 = function(arr) {
return arr.reduce(function(prev, curr, index, arr) {
return prev + curr;
});
};
/**
* 使用forEach遍历
* @param arr
* @returns {number}
*/
var sum3 = function(arr) {
var sum = 0;
arr.forEach(function(value, index, arr) {
sum += value;
}, 0);
return sum;
};
// 不考虑算法复杂度,用递归做:
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));
}
}
// 常规循环:
function sum(arr) {
var s = 0;
for (var i=arr.length-1; i>=0; i--) {
s += arr[i];
}
return s;
}
// 函数式编程 map-reduce:
function sum(arr) {
return arr.reduce(function(prev, curr, idx, arr){
return prev + curr;
});
}
// forEach遍历:
function sum(arr) {
var s = 0;
arr.forEach(function(val, idx, arr) {
s += val;
}, 0);
return s;
};
// eval:
function sum(arr) {
return eval(arr.join("+"));
};
function sum(arr) {
var suma=0;
arr.forEach(function(e){suma+=e;});
return suma;
}