计算给定数组 arr 中所有元素的总和(JS实现)

不考虑算法复杂度,用递归做:
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回调有三个参数:第一个参数是遍历的数组内容,第二个参数是对应的数组索引,第三个参数是数组本身
function sum(arr) {
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("+"));
};
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页