尝试将数组拆分为字符数组时出现间歇性类型错误

时间:2019-03-29 17:29:57

标签: javascript arrays split

因此,对于游戏节目应用程序项目,我有一系列“短语”。我试图生成一个随机数,以在该数组中选择一个短语,然后拆分短语字符。

当我使用.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

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("");    
    };

希望这会有所帮助!