2013-05-29 2 views
0

나는 배열과 같이 얻을 :동적 자바 스크립트 변수 이름

var array = [ [ [1,1],[1,2],[1,3] ] , [ [2,2],[3,3],[4,4] ] ] ; 

내가 두 정상 배열의 배열을 분리해서 변수를 독립적으로 (DATA1, DATA2, DATA3, DATA4을) 증가에 내용을 넣고 싶다.

그러나 VAR 배열이 서로 다른 시간에 크기가 다른 (때로는 3 배열, 때로는 4, ...) 지금 내 문제는 ... 증가 독립 변수 데이터 1, 데이터 2를 만드는 방법입니다

나는이

counter = 0; 
for (var content in array) 
{ 
    data + counter.toString() = content; 
    content++; 
} 

생각하지만 (나는 그것을 기대하지 않았다 그런데 : D) 작동하지 않습니다

우리가 함께 해결책을 찾을 수 있습니까?

감사합니다. 수잔 !!

+0

왜 그런 짓을 했을까 객체 자바 스크립트 배열 forfor..in을 사용하도록 추천 하시겠습니까? 당신은 글로벌 var'window [ "data"+ counter]'를 만들 수 있습니다. – C5H8NNaO4

+1

기술적 인면에서 "JS가 그런 것을 허용합니까?" 이것이 합리적인 질문이지만, 실제적인 목적을 위해 왜 그것을하고 싶습니까? 코드 리뷰에서 독립 변수 이름을 증가시키는 것은 배열로 대체되어야한다고 지적 할 수 있습니다. 특히 _ 변수의 수와 변수가 여러 개일 때 - 왜 다른 방식으로 가고 싶습니까? – nnnnnn

답변

1
var array = [ [ [1,1],[1,2],[1,3] ] , [ [2,2],[3,3],[4,4] ] ] ; 

for (var i=1;i<=array.length;i++) 
    window["data" + i] = array[i-1].slice(); 

바이올린 : http://jsfiddle.net/xC2kT/

내가

+1

굉장해! 감사!! – Susanne92

0

시도이 대신 :

counter = 0; 
for (var content in array) 
{ 
    window["data" + counter.toString()] = content; 
    counter++; 
} 
+3

배열을 위해서'for..in'을 사용하지 않기를 권합니다. 그리고 내용은'0,1' 배열 요소가 아니고'counter ++'가 아닙니다'content ++' –

+0

awesome! 고맙습니다!! – Susanne92

1

유일한 방법은 변수를 생성 (지방 실행 컨텍스트 즉 등록)하도록 그들을 표현을 허용하지 않는 variable declarationvar를 이용하여 선언된다.

전역 변수가 전역 개체의 속성으로 만들어 지지만, 표현식을 사용하여 효과적으로 변수를 만드는 유일한 실행 컨텍스트 인 자바 스크립트가 조금 있습니다. 전역 범위에서

var globalObject = this; 
globalObject.foo = 'foo'; 
globalObject[foo + 'bar'] = 'foobar'; 

는, (하지만 정확히) 여러면에서 동일하다 : 그러나

var foo = 'foo'; 
var foobar = 'foobar'; 

, 당신은 함수에서 로컬 실행 또는 변수 객체에 대한 참조를 얻을 수 없다 컨텍스트이므로 로컬 변수를 그렇게 만들 수 없습니다.

개체의 속성으로 "변수"를 만드는 것이 훨씬 좋습니다.

+0

정말 고마워요 !!! – Susanne92