2017-04-19 4 views
1

I eine Funktion eine Funktion geschaffen, die ich in 2 Parameter übergeben werden soll, und whetever Zahlen I in jene Parameter übergeben, möchte ich die Funktion zum Speichern nicht nur die 2-Nummern, aber alles dazwischen in ein Array. Hier ist mein Code unten:Funktion Ausdrucken nicht mehr als 1 bis 10 in Array

a = []; 

var range = function(start, end) { 
    for (j=start;j<=end;j++) { 
    return a.push(j); 
    return a; 
    } 
} 

console.log(range(5, 20)); 

In diesem Fall möchte ich es die Zahlen 5 speichern - 20 in meinem Array (a) so kann ich später die Summe über eine andere Funktion bekommen.

oben Mein Code funktioniert nicht. Was mache ich falsch?

+0

Sie wollen nicht eine 'return' vor' a.push (j) 'und' Ihre Rückkehr a' außerhalb der Schleife sein sollte. – Santi

Antwort

2

return Stichwort bricht sofort die Funktion. Verschieben Sie es außerhalb der for-Schleife, um das gewünschte Ergebnis zu erhalten.

var a = []; 
 

 
var range = function(start, end) { 
 
    for (j = start; j <= end; j++) { 
 
    a.push(j); 
 
    } 
 
    return a; 
 
} 
 

 
console.log(range(5, 20));

+1

Danke! klappt wunderbar! –

0

die Rückkehr Sie, nachdem Sie die Schleife abzuschließen.

0

Ihr Hauptproblem besteht darin, dass Sie nach der ersten Schleifeniteration von Ihrer Funktion zurückkehren. Sie geben auch a.push() zurück, die die Länge des Arrays zurückgibt, nicht das tatsächliche Array.

Eine noch bessere Lösung wäre allerdings sein, nicht eine globale Variable zu verwenden und einfach die in Array-Prototyp Methoden gebaut nutzen etwa so:

Sie Array(end-start + 1) verwenden können, ein Array mit der Anzahl der Elemente erstellen Sie müssen . Dann können Sie Array.apply().map() verwenden, um in die Zahlen im Array abzubilden, beginnend bei start und inkrementieren um den Index des Array-Elements.

var range = function(start, end) { 
 
    return Array.apply(null, Array(end - start + 1)).map((elem, index) => start + index); 
 
} 
 

 
console.log(range(5, 20));

+0

ist die .apply-Methode eine integrierte Array-Methode? nur neugierig –

+0

@MarketHydra Nun, 'Array' ist die Konstruktor * -Funktion *, um ein neues Array zu erstellen, und' .apply() 'ist eine integrierte Methode für den Prototyp der Funktion. [Hier sind die Dokumente] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply) – mhodges