javascript - 替换数组Javascript中多个索引处的内容
问题描述
我正在尝试使用 Javascript 制作 Hangman 游戏,用户在其中输入一个单词供其他人猜测。这个词被发送到一个函数(makeUnderlines),并被制作成一个下划线数组,并返回给玩家,提示他们输入一个他们想猜的字母。字母和单词被发送到一个函数,该函数在单词中找到字母的位置 (getPosition),并将位置发送到另一个函数。函数(insertLetters)应该用给定位置的字母替换下划线。除了该函数不替换数组中的任何内容外,所有这些都有效。如果它只在单词中出现一次,它只会替换第一个字母。任何解决此问题的建议将不胜感激。
<!DOCTYPE HTML>
<HTML>
<HEAD>
<META CHARSET="UTF-8">
<TITLE>Hangman</TITLE>
</HEAD>
<BODY>
<SCRIPT TYPE="text/javascript">
function makeUnderlines(word) {
for(i = 0; i < word.length; i++){
underlines.push("\"_\"");
}
return underlines;
}
function getPositions(word, letter) {
for(var i=0; i< word.length;i++) {
if (word[i] === letter) positions.push(i);
}
insertLetters(underlines, positions, letter)
}
function insertLetters(underlines, positions, bokstav){
underlines[positions] = letter;
return underlines;
}
let word = prompt("Choose a word for the player!");
underlines = [];
positions = [];
makeUnderlines(word);
for(i = 7; i > 0; i--){
letter = prompt("["+underlines+"]\n Guess a letter. You have " + i + " guesses left");
getPositions(word, letter);
}
</SCRIPT>
</BODY>
</HTML>
解决方案
开始深入研究的一种方法是使用调试器跟踪应用程序的流程。Chrome 开发工具有一个调试器,可让您逐行查看变量的当前值。
function insertLetters(underlines, positions, bokstav){
underlines[positions] = letter;
return underlines;
}
从 看insertLetters
,positions
应该是一个整数索引值数组,但它被直接用作整数。也许尝试遍历中的值positions
并使用它们来索引underlines
。
function insertLetters(underlines, positions, letter){
for (let i = 0; i < positions.length; i++) {
const pos = positions[i];
underlines[pos] = letter;
}
}
而且我认为您可以做的最后一件事getPositions
是使用positions = [];
.
总体而言,您的代码看起来非常实用。注意尝试将变量直接传递给函数,而不是依赖全局变量。
推荐阅读
- ios - How to fix iOS orientation with new API willAnimateRotationToInterfaceOrientation
- python - 如何从python中的布尔逻辑表达式中提取变量
- java - Java中2个坐标之间的距离
- java - 添加数据类型为时间的两列显示“操作数数据类型时间对于添加运算符无效”错误
- android - 无法创建所需的布局 xml (Android)
- visual-studio - 从 VS 2013 到 VS 2017 的电话簿 GUI 转换不起作用
- mongodb - mac导出路径不断重置
- android - Android TextInputEditText,inputType = textPassword,我看不到点
- php - 如果 PHP 中的时间相同,则将总数和设备添加到一个数组中
- mysql - MySQL:基于另一个并不总是具有匹配值的连接表进行排序