从数组中挑选多个随机数

时间:2016-07-10 06:47:22

标签: javascript arrays function random return

我写了这个函数:

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 等等。

然而,无论我通过控制台进行测试时输入的是什么号码,我总是只返回1个数组项。

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

我做错了什么?

4 个答案:

答案 0 :(得分:2)

试试这个:

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所说,预计结果将是字符串。所以如果recommendedProducts包含一些字符串,你应该在循环的每次迭代中将这个字符串添加到你的结果中,并在你的循环结束后返回它(这也是我从问题中理解的)

答案 1 :(得分:1)

试试这个:

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

将项目附加到数组中

其次你需要返回循环外部,如果从循环内部重新启动,则在第一次迭代后中断函数。

答案 2 :(得分:0)

return rand会在第一次结果时将您从功能中移除。

你可以删除循环,只需返回rand,然后调用该函数4次。

如果希望函数返回随机数数组而不是return rand,请将结果推送到新数组,并在for循环完成后返回数组。

答案 3 :(得分:0)

在你的循环中,变量rand的值将等于它最后一次迭代输出的值,你需要返回对象数组而不是单个对象来获得所需的结果。