【问题标题】:Object of objects always returning undefined with $.each对象的对象总是返回未定义的 $.each
【发布时间】:2019-11-03 13:11:07
【问题描述】:

也许有些傻,但我有这个 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) });

分别打印 1210 用于键和 ...

{} 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'])status[1] 不断返回{ error: true } 时返回undefined

【问题讨论】:

    标签: javascript jquery object javascript-objects each


    【解决方案1】:

    您的数组包含不同的属性,因此访问属性 error 将返回 undefined,因为它不存在于索引 1 和 2 中,仅存在于 0 中。

    $.each (status, function(i, item)
    {
        if (item.error != undefined)
            // do something
    
        if (item.validated != undefined)
            // do something
    });
    

    最后,关于您的编辑,正如我在第一段中所说,索引 1 中不存在 error 属性,因此以下代码应返回预期结果。

    console.log(status[0].error);

    【讨论】:

    • 我知道,但很抱歉:我正在调查所有这些,它与 JS 中的异步函数有关...status 变量填充在回调中,在异步函数中,所以它调用时还没有准备好。奇怪的是,如果我对整个status 变量执行console.log,它总是返回填充好的。但是,当我console.log 任何嵌套对象时,它总是返回undefined...如果是执行顺序问题,无论statusstatus[1]['owner'] 是否会返回未定义,不是吗? ??
    • 标记为解决方案,因为我了解根据提供的信息,您的解决方案是正确的。无论如何感谢@Linesofcode。
    猜你喜欢
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    相关资源
    最近更新 更多