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

JavaScript对数组执行搜索后while循环无任何输出该如何解决?

问题代码BUG排查

  • 变量大小写不匹配:全局定义的数组长度变量为大写SIZE,while循环判断条件中错误使用了未定义的小写size,JS对变量名大小写敏感,直接导致循环条件失效
  • 循环变量i未重置:前面填充数组的for循环结束后,i的值已经为4(等于SIZE),直接在while循环中复用该变量,循环初始就不满足i < SIZE的条件,代码不会进入循环执行
  • 循环逻辑顺序错误:while循环内先执行i++再做匹配判断,会直接跳过数组索引为0的第一个元素,同时当i等于3时执行i++会得到4,访问actors[4]会出现数组越界
  • 代码结构缺失大括号:while循环、匹配成功的if分支都缺少闭合大括号,和后续判断未找到的if逻辑层级混乱,即使进入循环也会执行异常

修复后可运行代码

var SIZE = 4;
var actors = new Array(SIZE); // 存储演员姓名的数组
var roles = new Array(SIZE); // 存储对应角色的数组

for (var i = 0; i < SIZE; i++)  {
    actors[i] = prompt ("请输入你第" + (i + 1) + "位喜欢的演员");
    roles[i] = prompt ("第" + (i + 1) + "位演员饰演的角色是什么?");
}

var favorite; // 存储要搜索的演员姓名
var found = false;
var BR = "<br>";    

favorite = prompt ("请输入你最喜欢的演员姓名");

// 重置循环变量i为0
var i = 0;
// 使用正确的大写SIZE变量
while (i < SIZE && !found)    {
    // 先判断当前i对应的元素,再执行i++
    if (actors[i] == favorite)  {
        found = true;
        document.write("你最喜欢的演员" + actors[i] + "饰演的角色是" + roles[i] + BR);
    }
    i++;
}

/* 注释掉的for循环修复版
for(var i = 0; i < SIZE; i++) {
    if ( favorite == actors[i]) {
        found = true;
        document.write("你最喜欢的演员" + actors[i] + "饰演的角色是" + roles[i] + BR);
    }
}
*/
// 未匹配到对应演员时执行
if (!found) { 
    document.write("抱歉,我们没有找到对应姓名的演员" + BR);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:06:07