获得未定义的'搜索引号数组时 - Javascript

时间:2015-08-26 18:09:45

标签: javascript arrays undefined

我正在研究一个随机引用生成器,我首先随机生成一个介于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();

它大部分时间都有效,但每隔一段时间它就会返回'未定义。'在测试一系列单词时,我没有遇到这个问题,比如'你好,' '绿色'等等,只有在我添加空格时才会发生。

3 个答案:

答案 0 :(得分:2)

Math.floor(Math.random() * (max - min +1)) + min

可以返回指向不存在的数组元素的max。数组索引从0length - 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);