簡體   English   中英

使用余數運算符Javascript對奇數和偶數進行排序

[英]Sorting odd and even numbers with the remainder operator Javascript

如果一個數字除以2后得到的余數不等於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);

您正在嘗試在生成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 })

或保存一些對偶數值的參考,以便可以將它們用於計算序列的所需子集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM