2015-06-03 107 views
0

我有多个阵列,像这样:for循环打印出多个阵列具有类似名称

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

接下来我有这样的循环:

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" 

或者类似的东西。

如果可能的话,我想只能用香草JS,因为我工作的一个项目(自主分配运动),我试着用香草来完成它的解决方案。有种武力让自己了解语言更好的锻炼。

(另外,我只编码4个月,很抱歉,如果这是一个小白问题,我无法找到答案随时随地在线,只是很多循环的正常进行打印输出阵列。)

回答

1

你可以存储所有四个阵列成一个较大的阵列(每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' 
+0

我花了一点认识到,你和AnthonyDJ基本上推荐同样的事情。但是,您深入解释了它。感谢你这样做,我很欣赏它(并且需要它完全包裹我的头)。 – Genko

+0

很高兴听到你发现它的价值! –

2

如果你可以在一个阵列中存储你的阵列,这将是一个更好的选择。

例如:

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正常。

+0

这其实效果很好。你和rkho都展示了在数组中粘贴数组的两种不同方式。他深入了解该函数的工作方式,但这种组织数组的方式看起来非常干净。这绝对是我从现在开始使用的一种习惯! (我要纪念他的答案在这里,因为完整的解释。我想,因为这是一个初学者的问题,这将是件好事,那万一别人遇到这个线程。) – Genko

+0

听起来很棒,很高兴你解决了它! – AnthonyDJ

1

你可以尝试的eval

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

我确实有一些问题得到这个工作,但我想我会更晚一些玩得到的eval想通了。欣赏建议。 – Genko

1

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

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

但是你已经考虑利用数组的数组?也许这将是一个更清晰的方式来实现同样的事情。

+0

我实际使用数组的数组没有考虑过,但一对夫妇的其他人的建议是,我现在就可以读了。我一直在努力养成一种学习干净编码的习惯,并且认为最好是让自己的目标是从头开始,而不是稍后改变习惯。感谢您花时间回答! – Genko

1

您可以使用窗口对象随时访问自己的变量。请使用以下代码动态访问您的变量。

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

} 
+0

这实际上工作得很好,我将保存这个以备将来使用。谢谢! – Genko

+1

当你有JSON对象有动态键时,这种方法特别有用。 var users = {user1:{name:“Punit”},user1:{name:“Genko”}}。您无法使用用户访问它。“user”+1。但是你可以像用户[“user”+1]那样访问它。 –

+0

当我使用带有动态密钥的JSON对象时,我一定会使用它。真的很感谢建议:) – Genko