因此,对于游戏节目应用程序项目,我有一系列“短语”。我试图生成一个随机数,以在该数组中选择一个短语,然后拆分短语字符。
当我使用.split()返回它,并在控制台中调用该函数时,我遇到类型错误,但似乎是断断续续的,如果我多次调用它,有时它会起作用,而其他时候它会抛出类型错误。
似乎是什么问题?
const phrases = [
'JavaScript is the best programming language',
'I love CSS',
'Check out Peer Reviews',
'Stack Overflow',
'This is in the phrases array'
];
const getRandomPhraseAsArray = arr => {
const randomNumber = arr[Math.floor(Math.random() * arr.length) +1];
return randomNumber.split("");
};
app.js:22 Uncaught TypeError: Cannot read property 'split' of undefined
at getRandomPhraseAsArray (app.js:22)
at <anonymous>:1:1
答案 0 :(得分:1)
您的代码存在的问题是,您试图将1添加到Math.Random()
中,此函数给出的值介于0到1之间,并且在将它给出的任何值与数组长度相乘之后,您可以进行操作< em>但是当您向其中添加+1
时,有时会超出数组长度。正确的解决方法应该是:
const phrases = [
'JavaScript is the best programming language',
'I love CSS',
'Check out Peer Reviews',
'Stack Overflow',
'This is in the phrases array'
];
const getRandomPhraseAsArray = arr => {
//removed the +1 here
const randomNumber = arr[Math.floor(Math.random() * arr.length)];
return randomNumber.split("");
};
希望这会有所帮助!