Не работает метод .join()

226
07 апреля 2018, 21:44

создавал консольную игру(я ещё начинающий программист на javascript)
не работает функция:

function showPlayerProgress(answerArray) {
    alert(answerArray.join(" "));
}

вот весь код:

function sayHello() {
    var userName = prompt("Ваше имя:");
    alert("Здравствуй, " + userName);
alert("Это игра \"Случайное слово\"");
}
//Привет
function pickWord() {
    var words = [
    "тетрадь",
    "отель",
    "спорт",
    "телефон",
    "деревня",
    "корова",
    "макака",
    "лучший",
    "игра",
    "программа",
    "природа",
    "театр",
    "город",
    "автомобиль",
    "гора",
    "карась",
    "худший"
];
    return words[Math.floor(Math.random() * words.length)]
}
function setupAnswerArray(word) {
    for (var i = 0; i < word.length; i++) {
    word[i] = "_";
}
}
//Создаем итоговый массив
function showPlayerProgress(answerArray) {
    alert(answerArray.join(" "));
}
//Показываем игроку текущий результат
function getGuess() {
    return (prompt("Введите любую букву или нажмите Отмена для выхода из игры")).toLowerCase();
}
//Получаем ответ игрока
function updateGameStatus(guess, word, answerArray) {
    var returningNumber = 0;
                    for (var j = 0; j < word.length; j++) {
                if (word[j] == guess) {
                    if (answerArray[j] == "_") {
                        returningNumber++;
                        }          
                }
            } 
   return returningNumber;    
}
//Обновляем игровой прогресс
function showAnswerAndCongratulatePlayer(answerArray) {
   if (remainingLetters === 0) {
alert(answerArray.join(' '));
alert("Поздравляю, вы выиграли! Было загадано слово \"" + randomWord + "\"");
}
} 
//Ниже идет само тело программы
//Выбираем случайное слово
var word = pickWord();
//Записываем в переменную случ. слово
var remainingLetters = word.length;
var answerArray = setupAnswerArray(word);
sayHello();
while (remainingLetters > 0) {
    showPlayerProgress(answerArray);
    var guess = getGuess();
    if (guess === null) {
        break;
    } else if (guess.length < 1) {
        alert('Введите букву!');
    } else if (guess.length > 1) {
        alert("Введите одиночную букву!");
    } else {
        var correctGuesses = updateGameStatus(guess, word, answerArray);
        remainingLetters -= correctGuesses;
    }
}
Answer 1

Попробуй так:

function setupAnswerArray(word) {
    for (var i = 0; i < word.length; i++) {
        word[i] = "_";
    }
    return word;
}

Хотя word у тебя тут не массив, а строка. Строку можно пройти как массив, но метода join у объекта String нет. Поэтому и дальше будет падать ошибка.

READ ALSO
Как начать понимать спецификации JavaScript?

Как начать понимать спецификации JavaScript?

Проблема в том, что я изучаю Java Script по мануалам и статьям, самостоятельноИспользую пока его просто для того, чтобы сделать тривиальные задачи

258
Из GSAP в WEBGL

Из GSAP в WEBGL

Есть приложение в ангуляре, которое использует GSAP анимациюОно меняет svg с помощью timeline, а точнее, Есть один svg и внутри него много и они анимируются...

221
Ошибка JSON при запуске бота

Ошибка JSON при запуске бота

При запуске бота вылазит это

201