繁体   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