You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript:如何从二维数组中选取随机单词用于Hangman游戏函数?

解决Hangman游戏选取单个单词的问题

问题原因

你当前代码里,palabrasas[Math.floor(Math.random() * palabrasas.length)]这段逻辑是从外层数组中随机选一个子数组(比如["lumetrio", "discord", ...]),而非子数组里的单个单词,导致后续游戏逻辑基于数组而非字符串运行,出现错误。

解决方案

要实现从指定行的子数组中选随机单词,分两步操作:

  1. 先获取你指定的目标子数组(比如palabrasas[0]对应第一行的单词组)
  2. 再从这个子数组里随机选取单个单词

修改后的完整代码

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]对应名字组。
  • 已将原代码中的&lt;替换为正确的<,避免语法错误。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:15:38