在某些索引(或索引)javascript处插入值

时间:2014-12-05 19:11:01

标签: javascript jquery arrays

我在工作中遇到了障碍。如何将值插入给定的索引?

例如,我正在做一个刽子手游戏。如果这个词是" 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);
}

4 个答案:

答案 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 = "";
 });

&#13;
&#13;
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;
&#13;
&#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');

here.

无耻地偷走了