![](/img/trans.png)
[英]Select x random elements from an array (that contains nested arrays) and no more than one from each nested array
[英]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)
將拉1 , randomProduct(4)
將拉4 , randomProduct(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.