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

使用for of循环生成3个数组组合时第三个数组取值异常如何解决

问题原因

  1. 最内层遍历accessory的for循环没有添加花括号{}包裹后续逻辑,默认只有紧跟循环的var room = []这一行属于循环体,剩下的对象赋值、日志打印、索引i自增的代码都在accessory循环全部执行完成后才会运行1次,此时accessory变量已经被遍历到数组的最后一项closed window,所以所有生成的房间对象的accessory属性都是这个值。
  2. var room = []写在循环内部,每次执行都会重置room数组,会清空之前存储的所有房间数据,属于逻辑冗余且有隐患的写法。

修复方案

给内层accessory循环加上花括号包裹所有需要循环执行的逻辑,同时把room数组的初始化移到所有循环的最外层即可。

修复后完整代码

var i = 0;
// room数组初始化移到最外层,避免被循环重置
var room = [];
for (var wall of [
    "red walls",
    "blue walls",
    "green walls",
    "pink walls",
    "purple walls",
    "gray walls",
    "white walls"]) {
    for (var floor of [
        "carpet floor",
        "oak-wood floor",
        "spruce-wood floor",
        "acacia-wood floor",
        "birch-wood floor"]) {
        // 给accessory循环添加花括号包裹所有需要循环执行的代码
        for (var accessory of [
            "no accessory",
            "open window",
            "closed window"]) {
            room[i] = {
                wall: wall,
                floor: floor,
                accessory: accessory
            };
            console.log("Room " + i + " - " + room[i].wall + ", " + room[i].floor + ", " + 
room[i].accessory);
            ++i;
        }
    }    
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:15:05