如果我将其放入Codeacademy实验室,它将返回总和。但是我不知道为什么我告诉它为什么不打印/记录/返回总数。

var a = 0,
 b = 1,
 f = 1,
 fibNums = [];
 sum = 0;


while (f < 4000000) {
    f = a + b;
    if ( f > 4000000 ) {
        break;
    } else {
        a = b;
        b = f;
        fibNums.push(f);
        i ++;
    }
}

for (i =0; i < fibNums.length; i++) {
    if (fibNums % 2 === 0) {
        sum += fibNums(i);
    }
}

最佳答案

您的代码中有几个错误。

您需要使用[]而不是()访问数组元素。在您的情况下,总和始终为0,因为您以错误的方式访问数组。

这是工作代码:



var a = 0,
  b = 1,
  f = 1,
  fibNums = [];
sum = 0;


while (f < 4000000) {
  f = a + b;
  if (f > 4000000) {
    break;
  } else {
    a = b;
    b = f;
    fibNums.push(f);

  }
}

for (var i = 0; i < fibNums.length; i++) {
  if (fibNums[i] % 2 == 0) {   // access array elements using [] notation
    sum += fibNums[i]; // access array using []
  }
}

console.log(sum); // Log the sum
console.log(fibNums); //log the fibNums array

10-06 15:56