![](/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.