for循环打印出多个名称相似的数组

for loop to print out multiple arrays with similar names

我有多个数组,像这样:

bugNames0 = ["wasp", "roach", "stinkbug", "mantis"];
bugNames1 = ["hornet", "beetle", "ant", "termite"];
bugNames2 = ["gnat", "fly", "grub", "chigger"];
bugNames3 = ["flea", "bed-bug","maggots", "cricket"];

接下来我有这个 for 循环:

function bugLoop() {
for (var i=0; i < 4 ; i++){
    console.log(bugNames0[i]);
    }
}

这将成功地将第一个数组打印到控制台,或者如果我手动更新数组名称中的数字,则将每个单独打印出来。

但是有没有办法做更像这样的事情呢?以下代码不起作用,但我希望它能解释我正在尝试做的事情:

for (var i=0, j=0; i < 4; i++) {
    console.log(bugNames(i)[j]);
    }
}

这里我代表 bugName#,我想在循环运行时通过 0 - 3 更新它,只打印出由 j 代表的每个数组的第一个选项。

打印到控制台的目标结果为:

"wasp", "hornet", "gnat", "flea"

或者类似的东西。

如果可能的话,我想要只使用 vanilla JS 的解决方案,因为我正在处理一个项目(自我分配的练习),我正在尝试使用 vanilla 完成它。有点强迫自己更好地了解语言。

(另外,我只写了 4 个月的代码,如果这是一个菜鸟问题,我很抱歉。我无法在任何地方在线找到答案,只是在正常打印数组时有很多循环。)

如果您可以将数组存储在一个数组中,那将是更好的选择。

例如:

bugNames[0] = ["wasp", "roach", "stinkbug", "mantis"];
bugNames[1] = ["hornet", "beetle", "ant", "termite"];
bugNames[2] = ["gnat", "fly", "grub", "chigger"];
bugNames[3] = ["flea", "bed-bug","maggots", "cricket"];

然后就可以正常循环bugNames数组了

您可以将所有四个数组存储到一个更大的数组中(每个 bugNames 数组只是这个更大数组中的一个元素)。我们称它为 bugCollection:

bugCollection = [["wasp", "roach", "stinkbug", "mantis"], ["hornet", "beetle", "ant", "termite"], ["gnat", "fly", "grub", "chigger"], ["flea", "bed-bug","maggots", "cricket"]]

或者,您可以保留这些数组的变量存储并说:

bugCollection = [bugNames0, bugNames1, bugNames2, bugNames3]

然后您可以遍历更大的数组,在每个数组中注销索引。

var oneFromEachArray = function(index) {
    for (var i = 0; i < bugCollection.length; i++) {
        console.log(bugCollection[i][index]);
    }
}

oneFromEachArray(0) // Console logs 'wasp', 'hornet', 'gnat', 'flea'

你可以试试 eval

for (var j=0; j < 4 ; j++){
    for (var i=0; i < 4 ; i++){
        eval("console.log(bugNames" + j + "[i]);");
    }
}

您可以像这样使用函数 eval():

for (var i=0, j=0; i < 4; i++) {
    console.log(eval('bugNames' + i)[j]);
}

但是您是否已经考虑过使用数组数组?也许这将是实现相同目标的更简洁的方法。

您始终可以使用 window 对象访问您的变量。请使用以下代码动态访问您的变量。

for (var i=0, j=0; i < 4; i++) {
    console.log(window["bugNames"+i][j]);

}