JavaScript:如何从二维数组中选取随机单词用于Hangman游戏函数?
解决Hangman游戏选取单个单词的问题
问题原因
你当前代码里,palabrasas[Math.floor(Math.random() * palabrasas.length)]这段逻辑是从外层数组中随机选一个子数组(比如["lumetrio", "discord", ...]),而非子数组里的单个单词,导致后续游戏逻辑基于数组而非字符串运行,出现错误。
解决方案
要实现从指定行的子数组中选随机单词,分两步操作:
- 先获取你指定的目标子数组(比如
palabrasas[0]对应第一行的单词组) - 再从这个子数组里随机选取单个单词
修改后的完整代码
function iniciar(){ var palabrasas = [ ["lumetrio", "discord", "ageofempires", "bootcamp", "juego"], ["gato","perro","burro","rinoceronte"], ["nacho","javier","vicente"] ]; // 第一步:指定要选取的子数组,这里选第0行(数组索引从0开始) var objetivoArray = palabrasas[0]; // 第二步:从目标子数组中随机选取单个单词 var palabra = objetivoArray[Math.floor(Math.random() * objetivoArray.length)]; var respuesta =[]; for (var i = 0; i < palabra.length; i++) { respuesta[i] = " _ "; } var letrasrestantes = palabra.length; while (letrasrestantes > 0) { alert(respuesta.join(" ")); var adivinar = prompt("Adivina una letra"); if (adivinar == null) { break; } else if (adivinar.length !== 1) { alert("Pone una sola letra"); } else { for (var j= 0; j < palabra.length; j++) { if (palabra[j] === adivinar){ respuesta[j] = adivinar; letrasrestantes--; } } } } alert(respuesta.join(" ")); alert("Advinaste, la palabra era: " + palabra); }
补充说明
- 若要切换其他行的单词组,只需修改
objetivoArray = palabrasas[0]中的索引:palabrasas[1]对应动物组,palabrasas[2]对应名字组。 - 已将原代码中的
<替换为正确的<,避免语法错误。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

