我在向数组中附加值时遇到问题

问题描述 投票:2回答:3

var secretWord = [];
var underScoreWord = [];
// var guesses = [];
var wordLetter = false;

var city = ["Paris", "Wellington", "Hanoi", "Perth", "Marseille", "London", "Ottawa", "Zurich", "Boston", "Tokyo", "Detroit"];

// console.log(city);

// Pick random word from the team array and push the result to an empty array. 
// FUNCTION 1 pick random city
function pickRandomCity() {
    var randomCity = city[Math.floor(Math.random() * city.length)];
    secretWord.push(randomCity);
    return randomCity;
}

var cityPicked = pickRandomCity();

// Get length of secretWord and push as underscores to am empty array
for (var i = 0; i < cityPicked.length; i++) {
underScoreWord.push("_");
}

console.log(secretWord);
console.log(underScoreWord);



// Check for letters
//listen for key press and check to see if its a match
document.onkeyup = function letterCheck(event) {
    var userGuess = event.key;  
  
    for (var j = 0; j < cityPicked.length; j++) {
        if (userGuess === cityPicked[j]) {
            wordLetter = true;
        }
        if (wordLetter) {
        underScoreWord.push(userGuess);
        }
    }



    console.log(wordLetter);
    

}

在onkeyup函数内部我试图将结果(按下的键)推入theunderScoreWord数组。当我键入正确的键时它将wordLetter boolean转换为true但我无法弄清楚如何将其推送到单词内部以便显示如下_ _ N _ _ _

我想我很接近,但是我又可以离开。有小费吗?

javascript
3个回答
1
投票

您希望通过_数组中匹配的单词按下来按键填充underScoreWord

示例:

  • 如果东京被选为rendom城市,
  • 它将[ "_", "_", "_", "_" ]存储在underScoreWord
  • 现在,如果使用按T它将填充[ "T", "_", "_", "_" ]
  • 在那之后使用按下o它将填充[ "T", "o", "_", "o" ]内部

问题:

  • secretWord是数组,但存储了1个长度的整个单词
  • 填充underScoreWord中的数据只是正确拼写匹配的相同索引

请检查以下解决方案:

var secretWord = [];
var underScoreWord = [];
var guesses = [];
var wordLetter = false;

var city = ["Paris", "Wellington", "Hanoi", "Perth", "Marseille", "London", "Ottawa", "Zurich", "Boston", "Tokyo", "Detroit"];

// Pick random word from the team array and push the result to an empty array. 
// FUNCTION 1 pick random city
function pickRandomCity() {
    var randomCity = city[Math.floor(Math.random() * city.length)];
    secretWord  = randomCity.split('');
            
    return randomCity;
}

var cityPicked = pickRandomCity();

// Get length of secretWord and push as underscores to am empty array
for (var i = 0; i < cityPicked.length; i++) {
    underScoreWord.push("_");
}

console.log('secretWord : ' + secretWord);
console.log('underScoreWord : ' + underScoreWord);
console.log('------------------');
console.log('cityPicked : ' + cityPicked);



// Check for letters
//listen for key press and check to see if its a match
document.onkeyup = function letterCheck(event) {
    var userGuess = event.key;
    for (var j = 0; j < secretWord.length; j++) {
        if (userGuess === secretWord[j]) {
            wordLetter = true;
            underScoreWord[j]= userGuess;
        }
    }
    console.log(underScoreWord);
}

0
投票

试试这个吧

替换它

underScoreWord.push(userGuess);

为了这

underScoreWord[j] = userGuess

0
投票

你不需要将这封信推到underScoreWord上。只需用字母替换相应的下划线即可。

for (var j = 0; j < cityPicked.length; j++) {
    if (userGuess == cityPicked[j]) {
        underScoreWord[j] = userGuess;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.