我在工作中遇到了障碍。如何将值插入给定的索引?
例如,我正在做一个刽子手游戏。如果这个词是" harry",并且玩家猜到了字母" r"如何将我的下划线数组转换为" _ _ r r _"?
我在下面的内容中从单独的js文件中获取一个单词,创建一个下划线数组(返回单词的每个字母一个),然后,当用户猜出一个字母时,它会找到一个或多个索引。这封信的出现。
**我已经更新了以下代码。朝向结尾的for循环使用我的下划线数组(wordToGuess [])和用户输入中的拼接。这样做我需要它,但它也把最后一个猜测的字母放在前面。例如,如果单词是"粗体"用户猜到的最后一个字母是" l",wordToGuess数组将是lbold。有没有人知道这是为什么?我确信它很容易被忽视,但它让我疯狂。
的Javascript
var word;
$(document).ready(function () {
SetGameBoard();
});
//When guess button is clicked
$('#BtnGuess').click(function () {
CheckGuess();
});
function GetPhrase() {
word = ReturnWord();
alert(word);
}
function SetGameBoard() {
GetPhrase();
wordToGuess = new Array(word.length);
// Place underscore for each letter in the answer word in the DivWord div
for (var i = 0; i < word.length; i++){
wordToGuess[i] = "_ ";
}
$('#DivWord').html(wordToGuess);
}
function CheckGuess() {
var pos = 0;
var posArray = [];
var guessLetter = $('#tbGuessLetter').val();
while ((pos = word.indexOf(guessLetter, pos)) > -1) {
posArray.push(++pos);
}
if (posArray.length == 0) {
alert(guessLetter + " is not in the word.");
}
//Splice in correct letters. Not working 100%
for(i=0; i < wordToGuess.length; i++){
wordToGuess.splice(posArray[i], 1, guessLetter);
}
$('#DivWord').html(wordToGuess);
alert(posArray);
alert(guessLetter);
}
答案 0 :(得分:2)
尝试这样的事情:
var word=["_","_","
_"];
word[1]="r";
现在您的数组变为,1,
答案 1 :(得分:0)
要修改数组,您需要Array.prototype.splice()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
来自文档:
var myFish = ['angel', 'clown', 'mandarin', 'surgeon'];
// removes 0 elements from index 2, and inserts 'drum'
var removed = myFish.splice(2, 0, 'drum');
// myFish is ['angel', 'clown', 'drum', 'mandarin', 'surgeon']
// removed is [], no elements removed
// removes 1 element from index 3
removed = myFish.splice(3, 1);
// myFish is ['angel', 'clown', 'drum', 'surgeon']
// removed is ['mandarin']
// removes 1 element from index 2, and inserts 'trumpet'
removed = myFish.splice(2, 1, 'trumpet');
// myFish is ['angel', 'clown', 'trumpet', 'surgeon']
// removed is ['drum']
// removes 2 elements from index 0, and inserts 'parrot', 'anemone' and 'blue'
removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
// myFish is ['parrot', 'anemone', 'blue', 'trumpet', 'surgeon']
// removed is ['angel', 'clown']
// removes 2 elements from index 3
removed = myFish.splice(3, Number.MAX_VALUE);
// myFish is ['parrot', 'anemone', 'blue']
// removed is ['trumpet', 'surgeon']
看起来你想要的行为就在这里的第三个例子中,他们将'drum'替换为'trumpet'。
答案 2 :(得分:0)
修改,更新
尝试
var word = "word" // `word` : input `String`
, _word = word.split("")
, mask = word.replace(/./g, "_")
, _mask = mask.split("")
, temp = ""
, guess = function (letter) {
_mask[
$.inArray(
letter
, _word
, temp.match(letter) !== null
? temp.lastIndexOf(letter) + 1
: 0
)
] = letter;
temp = _mask.join("");
return temp.indexOf("_") !== -1 ? temp : word
};
$("input").on("input", function (e) {
$("#results").text(guess(e.target.value));
e.target.value = "";
});
var word = "word" // `word` : `String`
, _word = word.split("")
, mask = word.replace(/./g, "_")
, _mask = mask.split("")
, temp = ""
, guess = function (letter) {
_mask[
$.inArray(
letter
, _word
, temp.match(letter) !== null
? temp.lastIndexOf(letter) + 1
: 0
)
] = letter;
temp = _mask.join("");
return temp.indexOf("_") !== -1 ? temp : word + " !"
};
$("input").on("input", function (e) {
$("#results").text(guess(e.target.value));
e.target.value = "";
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" />
<div id="results"></div>
&#13;
答案 3 :(得分:-1)
执行类似
的操作string replaceAt = function(str, index, character) {
return str.substr(0, index) + character + str.substr(index+character.length);
}
hangmanString = replaceAt(hangmanString, 3, 'r');
无耻地偷走了