2017-09-18 2 views
1

Ich möchte eine Funktion erstellen, die 50 zufällige Zahlen von 100 zurückgibt. Wenn ich console.log (getMines) schreibe, gibt es alle fünfzig Zahlen zurück. Aber wenn ich sie tatsächlich verwenden möchte, gibt meine Schleife nur eine Zahl zurück. Was ist das Problem?Rückgabe mehrerer Zahlen aus der Schleife

var getMines = function() { 
    for (count; count <= 100; count++) { 
     return "d" + (Math.floor(Math.random() * 50)); 
    } 
} 
+4

Das "Problem" ist, dass 'return' die Ausführung der aktuellen Funktion stoppt, total. – Teemu

+1

Sie sollten ein Array verwenden und die Zufallszahlen in dieses Array push –

+1

_ "Meine Schleife gibt nur eine Zahl" _ .. Sieht aus wie Ihre Frage die Antwort hat;) –

Antwort

3

Sie können nur einen einzelnen Wert von einer Funktion zurückgeben. Wenn Sie also Ihre erste Zahl zurückgeben, endet die Schleife im Wesentlichen.

Versuchen Sie es stattdessen!

var getMines = function() { 
    var minesArray = []; 
    for (var count=0; count <= 100; count++) { 
     minesArray.push("d" + (Math.floor(Math.random() * 50))); 
    } 
    return minesArray; 
} 

Dies wird ein Array aller Zahlen zurückgeben, die Sie dann durchlaufen können, um zu tun, was Sie brauchen. Sie können die Zahlen sortieren oder summieren usw.

Ich finde, ich sollte darauf hinweisen, dass Ihr Code 100 zufällige Zahlen zwischen 1 und 50, nicht 50 zufällige Zahlen zwischen 1 und 100 zurückgibt. Wenn das was Sie wollen und Sie mistpoke im OP nbd, aber wenn du 50 Zufallszahlen zwischen 1 und 100 willst, zähle auf < = 50 und multipliziere Math.random() mit 100.

+0

Vielleicht müssen Sie die Korrektur für '(zählen; zählen <= 100; ',' für (var count = 0; count <= 100; ', oder ist nicht notwendig? – kip

+0

Alter, vielen Dank. Ich möchte so schlau sein wie du! Wo hast du javaScript gelernt? –

+2

Haha, du wirst es rechtzeitig bekommen, Kumpel, es ist wirklich nur eine Frage der Übung.Ich habe eine Menge von freecodecamp und hackerrank gelernt, also lohnt sich das. Egal was, nur Code so viel wie du kannst! Viel Glück :) –

2

Sie benötigen einen var erstellen und randoms schieben, wie dies

var getMines = function() { 
    var returnArray = []; 
    for (var count = 0; count <= 100; count++) { 
     returnArray.push("d" + (Math.floor(Math.random() * 50))); 
    } 
    return returnArray; 
} 
2

Sie nur einmal aus einer Funktion zurückgeben kann, ein Array oder ein Objekt verwenden können, fügen Sie alle Werte auf sie und Rückkehr es.

var getMines = function() { 
    var arr = []; 
    for (count; count <= 100; count++) { 
     arr.push("d" + (Math.floor(Math.random() * 50))); 
    } 
    return arr; 
} 
2

Wenn ich Sie lesen richtig in Frage, müssen Sie 50 Zahlen mit einem zufälligen Wert von 100.

Sie müssen die Zahlen in der for Schleife und den Faktor wechseln eine Zufallszahl für das Abrufen und nehmen Sie einen Anfangswert von Null für die Looping-Variable, sowie nicht einen Wert innerhalb der for Schleife zurückgeben.

var getMines = function() { 
 
    var count, 
 
     array = []; 
 

 
    for (count = 0; count < 50; count++) { 
 
     array.push("d" + (Math.floor(Math.random() * 100))); 
 
    } 
 

 
    return array; 
 
} 
 

 
console.log(getMines());
.as-console-wrapper { max-height: 100% !important; top: 0; }

2

Das kann auch mit einigen coolen ES6 Tricks erfolgen:

const getMines =()=> Array.from(
    {length:50}, 
    ()=> "d" + Math.floor(Math.random() * 100) 
); 
+0

Mit ES6 ist besser ein Funktionsgenerator – kip

+0

@kip Sie meinen eine Generatorfunktion?Und nein, das ist nicht besser. –

+0

In diesem Fall, um alle Werte zu erhalten, ist keine bessere Option, aber vielleicht in Arrays zufällig mit einer großen Größe ist besser. – kip

2

Wenn Sie irgendwelche Zufalls 50 Zahlen zwischen 1 und 100 (beide eingeschlossen, habe ich gezwickt Ihre Version zu folgen. Sehen Sie, wenn das hilft.

var getMines = function() { 
 
     var nums = []; 
 
     for (var count=1; count <= 50; count++) { 
 
      nums[count-1]=Math.floor(Math.random() * 100) + 1; 
 
     } 
 
     return nums; 
 
    } 
 
    console.log(getMines());

Verwandte Themen