我被困在总结第10位。无法正确理解。
我得到的是10位数字的总和(仅过滤7位奇数后)。我应该在哪里


function sumFibs(num) {
  var fib = [1, 1];
  for (var i = 2; i < num; i++) {
    var next = fib[i - 1] + fib[i - 2];
    var fibi = fib.push(next);
  }

  return fib.filter(function(a) {
      return (a % 2 != 0);
    })
    .reduce(function(a, z) {
      return a + z;
    })
}
console.log(sumFibs(10));





预期输出10,但达到99

最佳答案

a < num添加到过滤器回调测试中,以便得到a % 2 && a < num



function sumFibs(num) {
	var fib = [0, 1];
	for (var i = 2; i < num; i++) {
		var next = fib[i - 1] + fib[i - 2];
		var fibi = fib.push(next);
	}
	return fib.filter(function (a) {
		return a % 2 && a < num;
	}).reduce(function (a, z) {
		return a + z;
	}, 0);
}

console.log(sumFibs(0))
console.log(sumFibs(1))
console.log(sumFibs(10))
console.log(sumFibs(9000))





如果只需要这些数字的和,就根本不需要使用数组



function sumFibs(num) {
  if(num <= 1) return 0;
  var a = 0, b = 1, sum = a + b;
  while(true) {
    var next = a + b;
    if(next >= num) {
      break;
    }
    if(next % 2) {
      sum += next;
    }
    a = b;
    b = next;
  }
  return sum
}
console.log(sumFibs(0))
console.log(sumFibs(1))
console.log(sumFibs(10))
console.log(sumFibs(9000))

09-25 20:49