举个例子,假设我有这个数组:
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]
然而,这不起作用,有没有人有办法做到这一点?
答案 0 :(得分:0)
让我们逐步完成您尝试过的代码,看看为什么它没能达到预期效果。
您尝试的代码实际执行的内容如下:
Results
数组中获取 ith 条目:Results[i]
tableID
。 Results[i].tableID
tableID
属性中的数组中获取第j 条目。 Results[i].tableID[j]
但是没有tableID
属性。由于没有tableID
属性,因此tableID
属性中不能存储数组。
您想要做的事情如下:
Results
数组中获取 ith 条目。 Results[i]
tableID
数组的 jth 索引中引用的名称获取属性。 Results[i][tableID[j]]
所以,你可以这样做:
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]];