¿Cómo usar los contenidos de la matriz como variables sin usar eval ()?

Tengo una list de variables o nombres de variables almacenados en una matriz. Quiero usarlos en un bucle, pero no quiero tener que usar eval() . ¿Cómo hago esto? Si guardo los valores en una matriz con comillas, tengo que usar eval() en el lado derecho de cualquier ecuación para representar el valor. Si almaceno solo el nombre de la variable, pensé que estaría almacenando la variable real, pero no está funcionando bien.

 $(data.xml).find('Question').each(function(){ var answer_1 = $(this).find("Answers_1").text(); var answer_2 = $(this).find("Answers_2").text(); var answer_3 = $(this).find("Answers_3").text(); var answer_4 = $(this).find("Answers_4").text(); var theID = $(this).find("ID").text(); var theBody = $(this).find("Body").text(); var answerArray = new Array(); answerArray = [answer_1,answer_2,answer_3,answer_4,theID,theBody] for(x=0;x<=5;x++) { testme = answerArray[x]; alert("looking for = " + answerArray[x] + ", which is " + testme) } }); 

Puede colocar los valores en una matriz:

 var answers = [ $(this).find("Answers_1").text(), $(this).find("Answers_2").text(), $(this).find("Answers_3").text(), $(this).find("Answers_4").text() ]; for(x=0;x<=5;x++) { alert("looking for = " + x + ", which is " + answers[x]) } 

EDITAR : O incluso

 var answers = $(this) .find("Answers_1, Answers_2, Answers_3, Answers_4") .map(function() { return $(this).text(); }) .get(); 

Si sus respuestas comparten una class común, puede cambiar el selector a $(this).find('.AnswerClass') .

Si necesita nombres de variables, puede usar una matriz asociada:

 var thing = { a: "Hello", b: "World" }; var name = 'a'; alert(thing[name]); 

Esto facilitaría que la matriz se llene.

 var answers = new Array(); $("Answers_1, Answers_2, Answers_3, Answers_4", this).text(function(index, currentText) { answers[index] = currentText; }); 

Como otros han mencionado, si puede colocar las variables en una matriz o un object, podrá acceder a ellas de forma más limpia.

Sin embargo, puede acceder a las variables a través del object window :

 var one = 1; var two = 2; var three = 3; var varName = "one"; alert(window[varName]); // -> equivalent to: alert(one); 

Por supuesto, puede asignar la variable varName la varName manera, incluso mientras se repite una matriz.