我有一个存储在数组中的变量列表或变量名称。我想在循环中使用它们,但我不想必须使用 eval()
。我该怎么做呢?如果我将值存储在带引号的数组中,我必须在任何等式的右侧使用 eval()
来呈现值。如果我只存储变量名,我想我会存储实际的变量,但它不能正常工作。
$(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)
}
});
最佳答案
您可以将值本身放入数组中:
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])
}
编辑:甚至
var answers = $(this)
.find("Answers_1, Answers_2, Answers_3, Answers_4")
.map(function() { return $(this).text(); })
.get();
如果您的答案共享一个公共(public)类,您可以将选择器更改为 $(this).find('.AnswerClass')
。
如果需要变量名,可以使用关联数组:
var thing = {
a: "Hello",
b: "World"
};
var name = 'a';
alert(thing[name]);
关于javascript - 如何在不使用 eval() 的情况下将数组的内容用作变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241482/