Когда игра заканчивается, я пытаюсь заменить подчеркивания буквами, которые они пропустили по одной, используя setTimeout. Эта функция меняет подчеркивание на правильную букву, но при следующем отображении возвращает букву обратно к подчеркиванию и повторяет этот процесс до конца, где отображается только последняя отсутствующая буква. Мне нужны все буквы, чтобы полностью поменять state.underscores, который представляет собой массив строк.
state.missingIndex - это массив чисел; отсутствующие буквенные индексы
слово - это полное слово, которое угадывает игрок
с использованием ловушки useReducer для изменения состояния
реагирование на ловушки и набор текста
const displayMissingLetters = () => {
let wrongWord: string[] = [];
state.losses.missingIndex.forEach((num, index) => {
setTimeout(() => {
wrongWord = state.underscores
.map((alpha: string, i: number) =>
alpha === "_" && word[i] === word[num] ? word[num] : alpha
);
dispatch({ type: "SET_UNDERSCORES", underscores: wrongWord });
}, index * 300);
});
}
This вот как это выглядит прямо сейчас:
![revealing underscores](https://i.stack.imgur.com/zYcEP.gif)
Вот как неправильно выглядит консоль:
![console underscores](https://i.stack.imgur.com/d11BV.png)