首页 > 解决方案 > 使用 for of 循环创建 3 个数组的组合

问题描述

我正在尝试列出 3 个数组中的所有字符串组合,并将所有这些组合分配给单独的变量。我只能用两个数组来做,但不能用三个,原因我不知道。这是代码:

var i = 0;
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"]) {
        for (var accessory of [
            "no accessory",
            "open window",
            "closed window"])
            var room = [];
            room[i] = {
                wall: wall,
                floor: floor,
                accessory: accessory
            };
            console.log("Room " + i + " - " + room[i].wall + ", " + room[i].floor + ", " + 
room[i].accessory);
            ++i;
    }    
}

每次我运行代码时,它都能完美运行,除了代码的最后一部分:第三个数组。附件属性始终显示为附件变量的最后一个字符串(关闭窗口)。我不知道该怎么做,或者什么可以解决这个问题。

标签: javascriptarrays

解决方案


我重写了一点你的代码。我认为它现在会起作用

var walls = [
    "red walls",
    "blue walls",
    "green walls",
    "pink walls",
    "purple walls",
    "gray walls",
    "white walls"
];

var floors = [
    "carpet floor",
    "oak-wood floor",
    "spruce-wood floor",
    "acacia-wood floor",
    "birch-wood floor"
]
var accessories = [
    "no accessory",
    "open window",
    "closed window"
]

var i = 0;
for (var wall of walls) {
    for (var floor of floors) {
        for (var accessory of accessories) {
            console.log("Room " + i + " - " + wall + ", " + floor + ", " + accessory);
            ++i;
        }
    }
}

推荐阅读