JQuery / Javascript - 使用变量名称的引用对象

时间:2015-12-03 19:24:57

标签: javascript jquery

请原谅我无法准确描述我追求的是什么。这种能力使得搜索答案变得非常困难,因此我现在要求。

我有一个对象(data.drivers),其中包含一堆圈数信息。

我正在遍历此对象以更新已显示的信息,但是希望压缩我的代码并能够循环遍历字段,而不是为每个可能的字段编写相同的代码。

问题是我不知道如何通过使用变量引用它来获取i的值。例如:

$.each(data.drivers, function(pos, i) {
  var driver_position = i.position;  // this and much more would happen for 9 fields
  alert (driver_position);
});

这很有效。

但我想做的是:

$.each(data.drivers, function(pos, i) {

  var fields = [ 'position', 'name', 'laps', 'lapTime', 'pace', 'difference', 'elapsedTime', 'fastLap', 'eqn' ];

  $.each (fields, function (ii, field) {
    alert (i.field);
  });

});

2 个答案:

答案 0 :(得分:1)

您正在寻找的是括号表示法:

alert(i[field]);

虽然使用一些更具描述性的变量名称有助于长期,但相当多。

答案 1 :(得分:1)

您也可以使用each循环遍历属性。除非只有您需要的特定属性,否则您不需要该字段数组属性,即使这样您也可以在each内处理它。

// Loop over array of driver objects
$.each(data.drivers, function(index, driver) {
    // Loop over driver object properties
    $.each(driver, function(key, value) {
        // key is property name
        // value is property value
    });
});

文档:http://api.jquery.com/jquery.each/

  

通用迭代器函数,可用于无缝迭代   对象和数组。数组和数组类似的对象   重复长度属性(例如函数的参数对象)   按数字索引,从0到长度-1。其他对象通过迭代   他们的命名属性。