javascript - 对象的对象总是返回未定义的 $.each
问题描述
也许有些愚蠢,但我有这个status
对象的 JS 对象(通过console.log(status)获得):
{1: {…}, 2: {…}, 10: {…}}
1:
error: true
__proto__: Object
2:
validated: false
value: 0
whitelist: false
__proto__: Object
10:
validated: false
value: 0
whitelist: false
__proto__: Object
__proto__: Object
然后我有:
$.each( status, function( key, value ) {
console.log(key);
console.log(value)
});
分别打印1
,对于键和2
...10
{}
error: true
__proto__: Object
{}
validated: false
value: 0
whitelist: false
__proto__: Object
{}
validated: false
value: 0
whitelist: false
__proto__: Object
...对于价值观。到目前为止,一切都很好。但是,当我尝试访问内部对象的任何键时,例如,
$.each( status, function( key, value ) {
console.log(value.validated);
console.log(value['error'])
});
...我undefined
无论如何都会得到:使用点语法、数组语法等等。任何想法?
编辑:太奇怪了,这不是$.each
因为做一个简单的
console.log(status[1]['error'])
不断返回undefined
时status[1]
返回{ error: true }
。
解决方案
您的数组包含不同的属性,因此访问该属性error
将返回undefined
,因为它不存在于索引 1 和 2 中,仅存在于 0 中。
$.each (status, function(i, item)
{
if (item.error != undefined)
// do something
if (item.validated != undefined)
// do something
});
最后,关于您的编辑,正如我在第一段中所说,error
索引 1 中不存在该属性,因此以下代码应返回预期结果。
console.log(status[0].error);
推荐阅读
- json - 如何从嵌套字典中获取单个字典?
- java - 这是实施recyclerview的正确方法吗?
- ios - openVPN 网络扩展数据包隧道提供商未启动 VPN 隧道
- javascript - 从 AWS 数据库查询字符串搜索
- instagram - instagram_graph_user_media 和 instagram_graph_user_profile 权限仅适用于测试用户
- kubernetes - 如何将启动参数传递到我的 kubernetes pod 服务
- python-3.x - 带有 gmt 的时间数据与 pandas 转换的格式输入不匹配
- c++ - LNK2005 类 X 已在 Y.obj 中定义
- cmd - 使用从 .TIF 到 .JPG 的“gdal_translate”如何将背景设置为白色?
- r - ggplot facet_grid,给出奇怪情节的代码