javascript - 如何在不使用 eval() 的情况下将数组的内容用作变量?

标签 javascript jquery arrays

我有一个存储在数组中的变量列表或变量名称。我想在循环中使用它们,但我不想必须使用 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/

相关文章:

javascript - 使用 tablesorter 和 <div> 正确排序日期

javascript - 未从输入框中提取值

javascript - 当所有 json 数据都经过循环时如何运行 then()

jquery - 如果新的 span 元素尚不存在,则在 input 元素之后插入该元素

jquery - 新的 jQuery 库包装技术的好处

javascript - HTML 面板根据 DataTables Select 出现/消失

javascript - 更改Google饼图中的pieSliceText值?

sql - 爆炸后如何从数组中删除一个元素

c - 队列性能明智哪个是更好的实现 - 数组或链表

arrays - 如何在 Perl 中将多个数组传递给 'foreach' 循环?