2016-05-18 8 views
-2
function countBy(x, n) { 

    var z = []; 

    for (i = 0; i < n; i++) { 

     z.push(z[i] + x); 
    } 

    return z; 

} 

Die Ergebnisse, die ich aus dem Testcode Test.assertSimilar (countBy (1,5), [1,2,3,4,5]) erhalte, sind [null, null, null, null, null] . Ich nehme an, dies liegt daran, dass das z-Array anfänglich leer ist. Ich habe nach Hilfe zu diesem Problem gesucht, aber ich kann keine finden. Vielen Dank!Wie erstellt man eine Funktion, die eine Länge (n) mit Vielfachen von (x) zurückgibt?

+0

Sie benötigen weitere Informationen. Mit 'Test.assertSimilar (actual, expected) 'überprüfen wir, dass der' actual' Wert gleich dem erwarteten Wert ist. Also _expecting_ 'countBy (x, n)', um das erste Vielfache von 'x' durch 0 oder um 1 auszuführen? Der Unterschied ist, dass das resultierende Array "[0,1,2,3,4]" statt "[1,2,3,4,5]" wäre; das ist später das, was du benutzt hast, um zu vergleichen. Oder haben Sie erwartet, dass Test.assertSimilar false zurückgibt? Null ist ein Vielfaches von allen Zahlen, also würde ich persönlich schießen, um meine erste Multiplikation mit 0 zu starten. – 8protons

Antwort

1
// z is the variable you're building. `z[i]` does not exist yet. 
z.push(z[i] + x); 

// You want this.. 
z.push(i*x); 

https://jsfiddle.net/9h911x28/

auch Frage der Präferenz, aber Sie wollen wahrscheinlich auch i aus als 1 statt 0 starten.

for (i = 1; i <= n; i++) 
+1

Präferenz überschreibt _good programming practice_ nicht, was ist, dass wir bei 'i = 0 beginnen, weil dies der erste Index ist Element von Arrays in fast allen Programmiersprachen. Auch wenn Sie _your_ array bei Index 1 starten, haben Sie einen unbenutzten und verschwendeten Index bei 0. Darüber hinaus wird jeder Programmierer, mit dem Sie arbeiten, durch diesen Schritt beim Zugriff auf Ihre Arrays verblüfft sein. – 8protons

+0

@ 8protons Ich stimme dir zu, aber in diesem Fall würde das Array 0 indiziert werden, da es nicht von "i" getastet wird, stattdessen hat es einen Wert von "i * x", also macht das Starten einer Schleife bei 1 Sinn Ich möchte mit 0 multiplizieren. –

+0

Also ist dann Ihr Vorschlag von einer Frage der Präferenz oder einer Angelegenheit oder Praktikabilität in Bezug auf Ihre Lösung? – 8protons

Verwandte Themen