2011-08-17 3 views
3

일부 변수 이름이 포함 된 배열이 있습니다. 이유를 묻지 마십시오. 배열을 foreach()하여 변수 이름으로 사용해야합니다. 내 변수가 있고 데이터를 포함하고 있습니다.변수 이름을 사용하는 자바 스크립트 배열

예 :

myArray = ["variable.name", "variable.age", "variable.genre"]; 
variable.name = "Mike"; 
console.log(treat_it_as_variable_name(myArray[0])); 

콘솔 이제 표시되어야합니다 : 마이크

는 자바 스크립트도 가능합니까?

+0

윌 문자열을 할 수 있도록

브라우저 환경 최상위 변수에
var tahir=person; console.log(eval('person.occupation'));//will print Software Development console.log(eval('tahir.occupation'));//will print Software Development 

window 객체에 정의 얻을 배열에서 항상 동일한 '변수'를 참조합니까? (즉, 마지막 부분 인 속성 만 다릅니다) –

+0

변수 이름을 변경하지 않겠습니까? –

답변

9

자바 스크립트 개체 속성에 동적으로 액세스 해 봅시다. 예를 들어, 다른 한편으로

var person = {name:"Tahir Akhtar", occupation: "Software Development" }; 
var p1="name"; 
var p2="occupation"; 
console.log(person[p1]); //will print Tahir Akhtar 
console.log(person[p2]); //will print Software Development 

eval는 문자열 변수에 저장된 전체 식을 계산할 수 있습니다.

예를 들어 (앞의 예에서 계속) : 당신이 최고 수준의 변수에 액세스하려는 경우 window[myvar]

1

당신은 변수를 직접 분석 할 수 있습니다 : 당신은이 작업을 수행 eval(myArray[i])을 사용할 수 있습니다

var t = myArray[0].split("."); 
console.log(this[t[0]][t[1]]); 
+0

로컬 변수 ☹에서는 작동하지 않습니다. – 7vujy0f0hy

3

. eval()은 나쁜 습관으로 간주됩니다.

당신은 대신이 같은 일을 고려해 볼 수 있습니다 :

var global = // code from earlier question here 
console.log(global[myArray[0]]) 

흠 ... 내가 볼 :

var myArray = ["name", "age", "genre"]; 
var i; 
for (i = 0; i < myArray.length; i++) { 
    console.log(variable[myArray[i]]); 
} 
1

가에 gloabal 개체의 보류하고 인덱스를 얻는 방법에 대한 this question를 참조하십시오 이제 "변수 이름"에는 점들이 포함되므로 실제로는 단일 이름이 아닙니다. 점으로 구분 된 부분으로 구문 분석하고 한 번에 하나씩 색인을 생성해야합니다.

+0

로컬 변수 ☹에서는 작동하지 않습니다. – 7vujy0f0hy