使用数组字符串在JSON数据之间进行选择

时间:2014-02-07 13:50:23

标签: javascript arrays json

举个例子,假设我有这个数组:

var tableID = ['id','name','address'];    

我还有一个返回的JSON数组,它对于数据库中的每一列都有相同的字符串。 JSON数据存储在变量“Results”

[{"id":"1","name":"Bob","address":"42 Bobs Street"}]

如何使用以下示例获取数据。假设我想通过使用tableID数组中的地址字符串来获取Bob的地址。我认为这样做的方式是(其中i和j是来自for循环的整数):

Results[i].tableID[j]

然而,这不起作用,有没有人有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

让我们逐步完成您尝试过的代码,看看为什么它没能达到预期效果。

您尝试的代码实际执行的内容如下:

  1. Results数组中获取 ith 条目:Results[i]
  2. 获取财产tableIDResults[i].tableID
  3. 从存储在tableID属性中的数组中获取第j 条目。 Results[i].tableID[j]
  4. 但是没有tableID属性。由于没有tableID属性,因此tableID属性中不能存储数组。

    您想要做的事情如下:

    1. Results数组中获取 ith 条目。 Results[i]
    2. 使用tableID数组的 jth 索引中引用的名称获取属性。 Results[i][tableID[j]]
    3. 所以,你可以这样做:

      Results[i][tableID[j]];
      

      或者,如果这是令人困惑的阅读(对我来说),你可以这样做:

      var property = tableID[j]; //Get the property first.
      Results[i][property]; //Get the property from the ith record.
      

      如果您仍然无法理解为什么需要以这种方式访问​​它,那么问问自己Results[i]返回的是什么?

      它在 ith 位置的数组中返回一个对象:

      {"id":"1","name":"Bob","address":"42 Bobs Street"}
      

      如果将此对象分配给变量:

      var obj = {"id":"1","name":"Bob","address":"42 Bobs Street"};
      

      您可以通过以下方式访问Bob的地址:

      obj['address'];
      

      因此,结合这些信息,我们得出:

      Results[i]['address'];
      

      在上面的语句中将'address'替换为tableID[j],然后获得:

      Results[i][tableID[j]];