这个javascript函数有什么问题?

时间:2016-04-24 14:13:35

标签: javascript arrays algorithm function addition

我想知道这个函数有什么问题需要数组和求和它的元素

var arr = [1,2,3,4,5,6,7,8,9,10];
var sum = 0;
var arraySum = function () {
    for (var i = 0 ; i<= arr.length ; i++) {
            sum += arr[i];
    }
    console.log(sum);
};
arraySum(arr);

3 个答案:

答案 0 :(得分:0)

您正在尝试访问数组外部的元素,这将返回undefined

for (var i = 0 ; i<= arr.length ; i++) {
//                 ^ the equal sign

替换为

for (var i = 0 ; i< arr.length ; i++) {

var arr = [1,2,3,4,5,6,7,8,9,10];
var sum = 0;
var arraySum = function () {
    for (var i = 0; i< arr.length; i++) {
        sum += arr[i];
    }
};

arraySum(arr);
document.write(sum);

答案 1 :(得分:0)

你的for循环条件存在问题。在检查长度时使用<

 for (var i = 0 ; i < arr.length ; i++) {
 //------------------^ replaced the <= with <

您的循环将再次迭代一次,此时值将为undefined

所以sum + undefined = NaN

如果您想确定使用<=,请从长度中减去1并使用它。

 for (var i = 0 ; i <= arr.length-1  ; i++) {
 //------------------------------^ decrement the length by 1

或者您可以使用Array.prototype.reduce

完成整个过程
var arr = [1,2,3,4,5,6,7,8,9,10];
var sum = arr.reduce((a, b) => { return a + b }, 0);

答案 2 :(得分:0)

您也可以使用Array.prototype.forEach功能

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var sum = 0;
arr.forEach(function(element) {
    sum += element;
});
console.log(sum);