2012-12-26 4 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] 여기서 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]); 
} 
}