JavaScript заменить значение в массиве

80
27 августа 2021, 01:00

// Массив со словами  
var words = [ 
  "программа", 
  "оладушек", 
  "холодильник", 
  "автомобиль" 
]; 
 
// выбор случайного слова  
var word = words[Math.floor(Math.random() * words.length)]; 
 
// создаем итоговый массив  
var answerArray = [] 
for (var i = 0; i < word.length; i++) { 
  answerArray += "_ " 
}; 
 
var remainingLetters = word.length; 
 
// игровой цикл  
while (remainingLetters > 0) { 
  // Показываем состояние игры 
  alert(answerArray); 
 
  // запрос варианта ответа  
  var guess = prompt("Введите одну бувку или введите 'exit'") 
  if (guess === "exit") { 
    alert("До свидания!"); 
    break; 
  } else if (guess.length !== 1) { 
    alert("Введите только одну букву") 
  } else { 
    // обновление состояния игры 
    for (var j = 0; j < word.length; j++) { 
      if (guess === word[j]) { 
        answerArray[j] = guess; 
        remainingLetters-- 
      } 
    } 
  } 
}

Вопрос: почему answerArray[j] = guess не присвает answerArray[j] значение из guess?

Answer 1

Проблема в блоке кода

for (var i = 0; i < word.length; i++) {
  answerArray += "_ "
};

В ходе выполнения этого кода, answerArray становится строкой и так как строки в javascript неизменяемые answerArray[j] = guess не меняет answerArray.

Для решения достаточно заменить += "_ " на answerArray.push("_"). Метод push добавляет элемент в массив.

READ ALSO
изменения :before при использовании :hover

изменения :before при использовании :hover

Прописал для блокаbox:before, нужно чтобы при использовании

103
Как изменить ширину столбца?

Как изменить ширину столбца?

Извините за банальный вопрос , но помогите мне поменять ширину столбца (это Vuetify)В документации не нашёл

149
Multiple Definition в &ldquo;неправильных&rdquo; местах. C++,

Multiple Definition в “неправильных” местах. C++,

компилятор пинается на какое-то множественное обьявление, но то, что как он считает множественно обьявляется не существуют в представленном...

114
Ошибки LNK2005 и LNK1169

Ошибки LNK2005 и LNK1169

Пытаюсь поэкспериментировать с файлами в проектеВыводит ошибки LNK2005 и LNK1169

77