Javascript 用余数运算符对奇数和偶数进行排序

Javascript 用余数运算符对奇数和偶数进行排序,javascript,Javascript,如果一个数被二除时余数不等于0,则该数必须为奇数。我试图在if语句中使用这种逻辑,只保留奇数值,而去掉偶数值。我不确定我是怎么做的,但myArray返回的是偶数值和奇数值。有什么想法吗 function sumFibs(num) { var myArray = [1,1]; // Create fibonacci sequence // Stop creating fibonacci numbers at num // Push odd numbers to oddNums ar

如果一个数被二除时余数不等于0,则该数必须为奇数。我试图在if语句中使用这种逻辑,只保留奇数值,而去掉偶数值。我不确定我是怎么做的,但myArray返回的是偶数值和奇数值。有什么想法吗

function sumFibs(num) {
  var myArray = [1,1];
  // Create fibonacci sequence
  // Stop creating fibonacci numbers at num
  // Push odd numbers to oddNums array
  for (var i = 0; i < myArray.length; i++) {

    if (myArray[i+1] + myArray[i] <= num && myArray[i+1] + myArray[i] % 2 !== 0) {
      myArray.push(myArray[i+1] + myArray[i]);
    }
  } // End loop.

  console.log(myArray);
  // Summation of oddNums array.
  return myArray.reduce(function(a,b) {
    return a + b;
  });
} // End function.

sumFibs(1000);
函数sumFibs(num){
var myArray=[1,1];
//创建斐波那契序列
//停止在num处创建斐波那契数
//将奇数推送到oddNums数组
对于(var i=0;i如果(myArray[i+1]+myArray[i]在生成fib序列时尝试过滤奇数值,这可能不是最佳方法。如果将模表达式括在括号中

(myArray[i+1] + myArray[i]) % 2 
您的数组将不包含继续生成序列所需的值。理想情况下,您应该生成完整的fib序列,然后进行筛选:

var myArray = [1,1];
for (var i = 0; i <= num; i++) {
  myArray.push(myArray[i+1] + myArray[i]);
} // End loop.
myArray = myArray.filter(function(a){ return a%2 !== 0 })
var myArray=[1,1];

对于(var i=0;i为什么不直接使用?您可能还应该在
myArray[i+1]+myArray[i]
周围使用括号,如下所示:
(myArray[i+1]+myArray[i])%2!==0
。运算符PrevendenceRight似乎有问题,请生成完整的序列,然后进行筛选。此方法有效。感谢发布。我应该注意,若要仅返回奇数,我应该返回{a%2!==0}。我将尝试将其编辑到您的帖子中。很好的捕获,抱歉,我没有校对就键入了它。