我有一个从自定义 Web 服务返回的 JSON 响应,如下所示:
var data = {
AZ:{charge:123,count:324},
TN:{charge:123,count:7545},
TX:{charge:165,count:345}
}
我希望使用通过另一个 json 调用返回的状态缩写数组进行循环。我不需要循环遍历所有状态,只需遍历此 json 调用所指定的特定状态。所以我最终得到了一系列状态缩写,如下所示:
var states = ["AZ","TX"];
然后我尝试循环数据并提取费用属性,如下所示:
console.log(data[states[i]].charge);
但是,当我这样做时,我从数据中得到了未定义的信息。当我取出状态缩写时,它就在那里,当我在这次调用之前注销数据时,所有数据都在那里。我可以通过执行以下操作来引用数据中的每条记录
console.log(data["TN"].charge);
有人愿意解释一下原因console.log(data[states[i]].charge);
但另一个呢?另外我可以做些什么来纠正这个问题?
最佳答案
您正在使用AX
和TX
作为 data
的键但它们不是字符串,而是变量。添加引号使它们成为字符串。
var states = ['AX','TX'];
为了避免代码中可能出现错误,请检查是否 data[states[i]]
不是undefined
在尝试访问 charge
之前属性。
var stateData = data[states[i]];
if(!stateData) return; //or `continue` if inside a loop to skip
console.log(stateData.charge);
关于Javascript 数组和对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16084190/