2012-12-26 40 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]); 
} 
}