Ошибка прерывистого типа при попытке разбить массив на массив символов - PullRequest
1 голос
/ 29 марта 2019

Итак, у меня есть массив «фраз» для проекта приложения игрового шоу. Я пытаюсь сгенерировать случайное число, выбрать фразу в этом массиве, а затем разделить фразы на символы.

Когда я возвращаю его с помощью .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 Ответ

1 голос
/ 29 марта 2019

Проблема с вашим кодом в том, что вы пытаетесь добавить 1 к вашему Math.Random() Эта функция дает значение от 0 до 1, и после того, как вы умножите любое значение на длину массива, вы можете пойти но при добавлении к нему +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("");    
    };

Надеюсь, это поможет!

...