Javascript 阵列未重置函数并从备用阵列中删除项
在这个文字游戏中,我随机生成9个字母,等待用户输入,然后检查用户输入的每个字母是否只使用开始时生成的字母 例如,如果startwordgame()生成单词maximizes 用户可以选择两个i和m,但只能选择一个a、x、z、e和s。。因此,如果他们输入单词“zebra”或“iii”,它将检查数组中的每个字母,并在第三个字母处检查,因为b不在列表中,或者i已多次使用。但如果我输入“迷宫”,它就会工作 问题 我遇到的问题是,“checkWordtolist”函数中的变量“checklist”不会在每次调用该函数时重置,即使我没有在任何我希望game.letters在生成后成为常量的地方将其定义为新值,该.gameletters数组也会更改 清单只是一个临时数组,每次调用函数时都可以重置为原始数组(this.gameletters) 虽然当我删除清单中的元素时,它也会从这个.gameletters中删除它 当我从数组中移除元素时 Html元素Javascript 阵列未重置函数并从备用阵列中删除项,javascript,jquery,arrays,Javascript,Jquery,Arrays,在这个文字游戏中,我随机生成9个字母,等待用户输入,然后检查用户输入的每个字母是否只使用开始时生成的字母 例如,如果startwordgame()生成单词maximizes 用户可以选择两个i和m,但只能选择一个a、x、z、e和s。。因此,如果他们输入单词“zebra”或“iii”,它将检查数组中的每个字母,并在第三个字母处检查,因为b不在列表中,或者i已多次使用。但如果我输入“迷宫”,它就会工作 问题 我遇到的问题是,“checkWordtolist”函数中的变量“checklist”不会在每
<input type="text" class="sumbit" maxlength="9" size="1" value="" />
Javascript元素
function startwordgame() {
this.gameletters = ["m","a","x","i","m","i","z","e","s"]; //Randomly generated list of 9 letters,
this.checkWordtolist = function(){
var checklist = this.gameletters;
value = $(".sumbit").val();
console.log(this.gameletters);
for (var i = 0; i < value.length; i++) {
console.log(value[i]);
if (checklist.indexOf(value[i]) == -1) {
console.log("Letter not in list or used more than once");
} else {
checklist.splice(checklist.indexOf(value[i]),1)
}
}
console.log("valid word") // call check dictionary function
value = $(".sumbit").val(""); // reset user's input
}
函数startwordgame(){
this.gameletters=[“m”、“a”、“x”、“i”、“m”、“i”、“z”、“e”、“s”];//随机生成的9个字母列表,
this.checkWordtolist=函数(){
var检查表=此项。字母;
值=$(“.sumbit”).val();
console.log(this.gameletters);
对于(变量i=0;i
}
高级感谢:)
检查表
在每次调用函数时都设置为gamelets
的值。您可以简单地跳过将数组复制到检查表中,并在函数中使用gameletters
。数组是Javascript中的引用类型,因此var checklist=this.gameletters代码>仅将对数组的引用复制到检查表
,而不复制数组本身
这样做的效果是,当您执行checklist.splice()
时,实际上是在修改原始数组
以您想要的方式复制阵列的最简单、最直接的方法是:
var checklist = this.gameletters.slice();
基本上,从原始数组中获取一个切片,并将其分配给检查表
,不提供任何范围,该切片将由原始数组中的每个项目组成。var checklist=this.gamelets代码>这里它将gameletters的引用分配给检查表,所以当你删除元素时,它会影响到这两个不起作用的元素,因为我使用检查表来查看用户输入是否有许多相同的值。如果我使用gameletters,我只需在其他地方将其定义为常量,因为它在其他地方使用,并且需要是静态的