Javascript 数组和对象键

标签 javascript

我有一个从自定义 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);但另一个呢?另外我可以做些什么来纠正这个问题?

最佳答案

您正在使用AXTX作为 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/

相关文章:

javascript - 使用 jquery $.each 时如何检查当前元素是否是最后一个元素

javascript - 同源策略不允许读取远程资源

javascript - Socket.io ReferenceError 客户端未定义

javascript - 将 y 轴标签添加到 NVD3 多条形图

javascript - 如何使用 childNodes (Javascript) 更改元素的内容?

javascript - 使用 postgreSQL 和 Tape(npm 模块)的 INNER JOIN 查询测试失败

javascript - 如何将剪贴板中的图像粘贴到 Web 表单中?

Javascript 函数在两个特定值之间反转

javascript - 在一个查询中为每个属性分组不同的值和计数

javascript - 与未定义的比较