我正在研究一个随机引用生成器,我首先随机生成一个介于0和数组长度之间的数字'引号,'然后返回那个引用。
function getQuote() {
var quotes = ["I never met a toby that I didn't like ~ Kimya Dawson", "Blood in my beard ~ Aesop Rock", "How many roads must a man walk down? ~ Bob Dylan", "Orange is the new black ~ Jenji Kohan"];
function randomNumber(min, max) {
var quote = Math.floor(Math.random() * (max - min +1)) + min
return quotes[quote];
};
return randomNumber(0, quotes.length);
};
getQuote();
它大部分时间都有效,但每隔一段时间它就会返回'未定义。'在测试一系列单词时,我没有遇到这个问题,比如'你好,' '绿色'等等,只有在我添加空格时才会发生。
答案 0 :(得分:2)
Math.floor(Math.random() * (max - min +1)) + min
可以返回指向不存在的数组元素的max
。数组索引从0
到length - 1
。
应该是
Math.floor(Math.random() * (max - min)) + min
答案 1 :(得分:1)
找到随机索引的代码中的+1
是您的问题。
有4个引号,因此max
为4. 4-0+1
为5,而不是4,因此您每隔一段时间就会生成一个值4
,并且在阵列中的那个位置什么都不是。 (引号位于索引0,1,2和3处。)
答案 2 :(得分:0)
数组从0开始,所以在你的情况下,max是3(引号[3])。 但是长度函数返回元素数(4)。
return randomNumber(0, quotes.length-1);