我写了这个函数:
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));
我做错了什么?
答案 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
的值将等于它最后一次迭代输出的值,你需要返回对象数组而不是单个对象来获得所需的结果。