Я обнаружил большое количество постов, в которых обсуждаются методы поиска / замены для строк в массивах, однако все они, похоже, полагаются на «статическую строку» для замены
, то есть:
var str = "Mr Blue has a blue house and a blue car";
var res = str.replace(/blue/g, "red");
Мне нужно найти и заменить проверку на входное событие
var whichKey = (String.fromCharCode(event.keyCode));
, но также динамически находить и заменять символы, которые совпадают в другой строке.
, чтобы было ясно:
Я играю в «палача»
пользователь нажимает «W» (например) как «угадай»:
secretPuzzleSolution = ['s', 'o', 'l', 'u', 't', 'i', 'o', 'n']
puzzleUserSees = ['_', '_', '_', '_', '_', '_', '_', '_']
W не находится вголоволомка, поэтому они потеряют «попробовать», если они нажмут «S», код проверит secretPuzzleSolution [] на «s» и заменит все «_» в puzzleUserSees [] на «s» в правильных местах и вернет новоеPuzzleUserSees = ['S', '_', '_', '_', '_', '_', '_', '_',] в результате.
Код успешно находитнажатие клавиши в secretPuzzleSolution [], но я пока не могу получить
скопировать позицию из secretPuzzleSolution [] так, чтобы элемент puzzleUserSees [] был изменен в правильной позиции
, чтобы заменить ВСЕ экземпляры нажатия клавиш, а не только первый (если в secretPuzzleSolution есть два элемента 's')], поменяйте обе позиции в правильных позициях в puzzleUserSees []
, что у меня так далеко, оно частично выполняет свою работу, но, как вы можете видеть, явно разбито на числоспособов.Есть идеи?
Вот раздел, с которым я работаю:
document.onkeydown = function(e) {
var whichKey = (String.fromCharCode(event.keyCode));
var keyPress = whichKey.toLocaleLowerCase();
var found = secretPuzzleSolution.find(function(element) {
var isMatch = secretPuzzleSolution.indexOf(element);
if (typeof(element) !== 'undefined') {
puzzleUserSees.splice((isMatch), (isMatch), element);
remainingMystery--;
} else {
guessList.push(keyPress);
triesLeft--;
}
return element === keyPress;
});
if (remainingMystery <= 0) {
document.getElementById('game-display-area').innerHTML = ('YOU WIN!')
};
console.log('These guesses were correct: ' + found);
};
Последнее, что я добавлю, это то, что я в школе, так что я уверен, что есть причудливый способсделать это или с помощью jQuery, но должен быть простой способ только с JS, поскольку это все, что я должен знать до сих пор:)
что-то еще, что я пробовал:
var test_array = (secretPuzzleSolution.indexOf(keyPress) > -1);
if (test_array === true) {
console.log(keyPress + ' was found in the puzzle');
for (i = 0; i < puzzleUserSees.length; i++) {
if (keyPress === puzzleUserSees[i]) {
puzzleUserSees.splice([i], keyPress)
}
}
} else {
triesLeft--;
guessList.push(keyPress);
console.log(keyPress + ' was NOT found');
}
Спасибо!