簡體   English   中英

從數組中選擇多個隨機數

[英]Picking more than one random from an array

我寫了這個函數:

function randomProduct(num) {
  var iter = num;
  for (var i = 0; i < iter; i++) {
    var rand = recommendedProducts[Math.floor(Math.random() * recommendedProducts.length)];
    return rand
  }
}

這應該從recommendedProducts數組中提取,但是在調用函數時需要很多。 所以基本上randomProduct(1)拉1randomProduct(4)拉4randomProduct(4)

但是,無論通過控制台進行測試時,無論在此輸入什么數字,我總是只會得到1個數組項。

console.log(randomProduct(1));
console.log(randomProduct(2));
console.log(randomProduct(3));
console.log(randomProduct(4));

我究竟做錯了什么?

嘗試這個:

function randomProduct(num) {
    var iter = num;
    var rand ="";
    for (var i = 0; i < iter; i++) {
    rand += recommendedProducts[Math.floor(Math.random() * recommendedProducts.length)];
    }
    return rand

 }

就像@Steve Medley所說的那樣,結果應該是字符串。 因此,如果RecommendationProducts包含一些字符串,則應在循環的每次迭代中將此字符串添加到結果中,並在循環完成后返回它(這也是我從問題中了解的內容)

嘗試這個:

function randomProduct(num) {
    var iter = num;
    var randomArray = [];
    for (var i = 0; i < iter; i++) {
     randomArray.push(recommendedProducts[Math.floor(Math.random() * recommendedProducts.length)]);
    }
    return randomArray.join(); // returns it as a string
}

首先,您需要使用push將各項附加到數組

其次,您需要返回到循環外部,如果從循環內部重新運行,則會在第一次迭代后中斷函數。

return rand使您從第一個結果中退出功能。

您可以刪除循環,只需返回rand,然后調用該函數4次。

如果要讓函數返回隨機數數組,而不是return rand ,則將結果推送到新數組,並在for循環完成后返回該數組。

在循環中,變量rand的值將等於上次迭代輸出的值,您需要返回對象數組而不是單個對象以獲得所需的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM