题目描述

计算给定数组 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;
}

results matching ""

    No results matching ""