2016-03-29 16 views
0

Eğer bir sayı, ikiye bölündüğünde, 0'a eşit olmayan bir geri sayıma sahipse, bu sayı tek sayı olmalıdır. Sadece mantıksal değerleri korumak ve hatta onlardan kurtulmak için if deyiminde bu mantığı kullanmaya çalışıyorum. Bunu nasıl yanlış yaptığımı bilmiyorum, ama myArray değerleri bile tek tek de döndürüyor. Herhangi bir fikir?Kalan işleçle tek ve çift sayıların sıralanması Javascript

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); 
+2

Neden sadece ['filter'] kullanılmıyor (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)? – Xufox

+2

Ayrıca, büyük olasılıkla parantezleri 'myArray [i + 1] + myArray [i] 'etrafında kullanmalısınız, şöyle ki:' (myArray [i + 1] + myArray [i])% 2! == 0'. – Xufox

+0

Operatör önceliği –

cevap

0

Tek tek filtrelemeyi oluştururken, muhtemelen en iyi yaklaşım olmayan, fib değerlerini filtrelemeye çalışıyorsunuz. parantez içinde modülo ifadesini,

(myArray[i+1] + myArray[i]) % 2 

Kişisel dizi dizisi üreten devam etmek için gerekli değerleri içermez sarın edin. İdeal tam yalan serisi oluşturmak gerekir, ardından filtre:

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 }) 

ya da serinin istenen alt kümesini hesaplamak için kullanılabilir, böylece bile değerlere bazı başvuru kaydedin.

+0

Sağ ile ilgili bir sorun gibi görünüyor, tam seriyi sonra süzün. Bu yaklaşım işe yaradı. Mesaj için teşekkürler. Dikkat etmem gereken tek sayıları geri döndürmek için {a% 2! == 0}. Bunu yayınınıza düzenlemeyi deneyeceğim. –

+0

Güzel yakalama, kusura bakmadan yazdım. – nick

İlgili konular