2012-12-26 37 views
0

我有一组以下列方式命名的数组:question0, question1, question2
我也有一个对应于问题编号的变量。访问特定数组

有了这个,我将如何访问阵列question0而不必输入整个名称。例如,在for循环中,如果循环编号为5,我想在question5上执行一个操作。我知道这很简单,但我一直无法找到解决方案。

+2

它可以用'eval'完成,但它不应该。 – gdoron

+0

您是否在寻找[forEach](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach)? –

+1

为什么你不会有一个数组的数组呢?还是地图? –

回答

1

为什么不使用大阵列question,其中每个项目它本身就是一个数组?

除此之外,如果变量是全局的,则可以使用window['question'+i],其中i是问题的编号。

+0

一个数组中的数组?不,我们必须更深入! –

2

以连续数字结尾的变量通常是使用数组的提示。听起来像是你需要一个数组的数组,而不是,然后你可以:

doOperation(question[somenumber]) 
+0

当我做一个操作时说:BigArray [0] .push(object),而数组'question0'是BigArray [0]上的对象,全局question0数组是否也会被更新? –

+0

@MannyNarton:是的。 (但是你可能不应该再需要一个全局的'question0'了......) – Ryan

1

不要用序数作为其后缀使用的变量名;使用适当的结构,诸如数组:

var questions = ['why?', 'what?', 'where?'], 
nr = 2; // the question number 

alert(questions[nr]); 

在我的例子中,每个“问题”是一个字符串,但它可以是任何其它的结构,包括另一个阵列。

0

我认为将问题(n)值作为数组会更简单。从那里你可以使用以下内容:questions[i]其中我代表当前循环数,从而改善操作。

var questions = [["What?", "Why?"], ["When?", "How?"]]; 
for(var i = 0; i < questions.length; i++) { 
for(var j = 0; j < questions[i].length; j++) { 
    console.info(questions[i][j]); 
} 
}