2013-03-24 2 views
0

변수의 값을 다른 변수의 이름으로 만들 수있는 방법이 있습니까? 예를 들어, 변수 이름 (value_of_i)이 반복되는 동안 "i"가 인 것을 원합니다. 아래의 while 루프는 내가 사용하고있는 것이 아니며 내가 묻는 것을 설명하는 것이다.다른 변수의 값을 기반으로 동적 변수 이름을 만드는 방법이 있습니까?

var 1 = "This loop has ran " + i + "times."; 

둘째 interation :

첫 번째 반복에 대한
var i = 1; 
while(i<10) 
{ 

var value_of_i = "This loop has ran " + i + "times."; 

i++; 
} 

"나"그래서 변수 이름은 '1'이어야 할 것이다 1과 동일

var 2 = "This loop has ran " + i + "times."; 
+0

이 게시물을 참조하십시오 : http://stackoverflow.com/questions/6084858/javascript-use-variable-as-object-name – gongzhitaao

+0

json 개체에 모든 데이터를 넣고 myVar [ 'wantedIndex']에 액세스하는 방법은 무엇입니까? 또한 window [ 'yourVariableName'] 전역 배열을 시도 할 수 있습니다. –

+1

fwiw'var 1 = "..."'이 (가) 유효하지 않습니다. 숫자는 자바 스크립트에서 변수 이름이 될 수 없습니다. –

답변

2

예. bracket notation를 사용하여 그 이름stringVariable에 저장된 값입니다 containingObject에서 당신이 속성에 액세스하는 containingObject[stringVariable] 같은

Here is a working fiddle

하고 뭔가 (여기서하는 것은 tutorial in MDN입니다). 당신은 당신이 창 대신 this를 사용하고 싶은 경우

// this assumes browser JavaScript where window is the global namespace 
// in node.js this would be a little different 
var i=0; 
while(i<10){ 
    window["counters"+i] = "This is loop has ran " + i + "times."; 
    i++; 
} 
console.log(counters3); 

그러나 이것은 엄격 모드에서 실패 할 수 있습니다. 자바 스크립트 객체의

속성은 또한 액세스 또는 브래킷 표기법을 사용하여 설정할 수 있습니다 :

여기에 대괄호 표기법 위의 MDN 링크에서 작동하는 방법의 주요 설명이다. 각 속성은 속성에 액세스하는 데 사용할 수있는 문자열 값과 연결되기 때문에 객체를 연관 배열이라고도합니다.

var propertyName = "make"; 
myCar[propertyName] = "Ford"; 

propertyName = "model"; 
myCar[propertyName] = "Mustang"; 
0

당신은 할 수 있습니다

myCar["make"] = "Ford"; 
myCar["model"] = "Mustang"; 
myCar["year"] = 1969; 

또한 변수에 저장되는 문자열 값을 사용하여 속성에 액세스 할 수 있습니다 다음과 같이 따라서, 예를 들어, 당신은 myCar라는 객체의 속성에 액세스 할 수 있습니다 변수 이름을 유효한 이름이 아닌 숫자로 만들지 마십시오. 따라서 var 1=""은 유효하지 않습니다.

그러나 동적 같은

등 var에 variablenamehere가 전역 변수로 범위가됩니다 어디서나 액세스 할 수 있습니다 것을 제외하고

그게 전부

var x = "variablenamehere"; 

window[x] = "variablevaluehere"; 

을 할 수있는 값을 설정, 현재 함수 범위로 제한되는 것이 아닙니다.

0

strings을 으로 색인 된 array에 저장하지 않으시겠습니까?

이렇게하면 나중에 효율적으로 쉽게 참조 할 수 있습니다.

var loopI = new Array(); 

for(var i = 0; i < 10; ++i) { 
    loopI[i] = "This loop has ran " + i + "times."; 
} 
0

이 작동 :

var o = {}; 
var d = "dog"; 
for (var k = 0; k < 5; k += 1) { 
    o[d+k] = k*100; 
} 
console.log(o.dog3); // 300 

이 일을 가까이 온다 당신이 원하는 : 사용하려고 다른 사람에 대한 당황과 시간 낭비가 발생할 수

var N = {}; 
var M = {}; 
var i = 1; 
while(i<10) 
{ 
    N[i] = "This loop ran " + i + " times."; 
    // Or, so you can use dot notation later: 
    M['OO'+i] = "This loop ran " + i + " times."; 
    // Those are capital O's, not zeros. Numbers won't work. 
    i++; 
} 
console.log(N[3]); // This loop ran 3 times. 
console.log(M.OO7); // This loop ran 7 times. 

'OO'표기하여 암호; 그러나 그것도 그들에게 즐거움의 원천이 될 수 있습니다. 이것은 하얀 두 개의 움직임이 나이트를 데려 와서 다시 돌려 놓은 후에 체스 보드를 생각 나게합니다. 이사회는 검은 색이 먼저 움직 였음을 보여주는 것처럼 보입니다. 어떤 사람들은 누군가가 어떤 일이 일어 났는지 알려주지 않으면 그 구성이 불법적 인 놀이임을 증명할 것이라고 끊임없이 주장 할 것입니다.

관련 문제