2017-09-18 38 views
1

我想創建一個返回50個隨機數的函數。如果我編寫console.log(getMines),它將返回所有五十個數字。但是如果我想實際使用它們,我的循環只會返回一個數字。有什麼問題?返回循環中的多個數

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

「問題」是,'return'完全停止當前函數的執行。 – Teemu

+1

您應該使用一個數組並將隨機數字推入該數組中 –

+1

_「我的循環只返回一個數字」_ ..看起來您的問題有答案;) –

回答

3

您只能從函數返回一個值。所以一旦你返回你的第一個數字,循環基本上結束了。

試試吧!

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

這將返回所有數字的數組,然後您可以通過該數組進行迭代以執行所需的操作。您可以對數字進行排序或將它們相加等。

我覺得我應該指出,您的代碼將返回1到50之間的100個隨機數,而不是1到100之間的50個隨機數。如果這就是您想要的和您在OP nbd中錯開,但是如果你想要1到100之間的50個隨機數,改變計數爲< = 50,並將Math.random()乘以100。

+0

也許您需要將更正添加到'for(count; count <= 100;','for(var count = 0; count <= 100;',或者是不是必須的) – kip

+0

Dude,非常感謝你,我想和你一樣聰明!你在哪裏學習javaScript? –

+2

哈哈,你會得到它的時間夥伴,這只是一個實踐問題,我從freecodecamp和hackerrank中學到了很多東西,所以這些都值得一試。無論如何,只要你儘可能多的編碼!任何編碼都是富有成效的編碼。祝你好運:) –

2

你需要創建一個變種,推動隨機量,這樣

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

你只能從一個函數返回只有一次,你可以使用一個數組或對象,所有的值添加到它和回報它。

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

如果我讀了你的問題的權利,你需要50個號碼與一個隨機值超出100

你需要切換在for循環數和係數得到一個隨機數,並採取一個初始值循環變量的值爲零,並且不會在for循環內返回一些值。

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

這也可以用一些很酷的ES6技巧來完成:

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

用ES6更好用一個函數發生器 – kip

+0

@kip你的意思是一個generator函數?不,那不是更好。 –

+0

在這種情況下獲得所有的值,不是一個更好的選擇,但也許在隨機數組巨大的隨機陣列更好。 – kip

2

如果您需要1和100(包括兩端之間的任何隨機50個號碼,我已經優化了你看看有沒有幫助。看看有沒有幫助。

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());