首页 > 解决方案 > JavaScript 试图读取对象在控制台上给我 undefined

问题描述

我正在尝试读取我拥有的一些数据。

我的控制台显示它看起来像这样:

    {
    "calls":"0",
    "ids":[
        {
            "id":"5117-9e39-7afd-46b3-a066-14e4-3433-871f",
            "feat":{
                "dates":{
                    "exp":"2018-10-02"
                },
                "read":[
                    {
                        "name":"Joe"
                    }
                ]
            }
        }
    ]
}

所以我试图 console.log 所以它给了我这个名字。

我已经这样做了:

console.info(data.ids.read.name)

这是返回undefined

我怎样才能让它返回名称?

标签: javascript

解决方案


根据您的描述,我认为您的问题是由您记录一个对象并记录该对象的特定成员引起的。

console.log 语句将为您提供可以展开的预览,预览显示对象在您记录时的原样。它有时会给您一个扩展它的选项,并且扩展视图将显示对象现在的样子。

当您记录原始值或获得不可扩展的预览时,您将始终看到记录时的对象。

Nikhil 建议从对象记录 JSON 字符串是一个很好的提示,因为您将在记录对象时按原样记录对象(字符串是原始的,不会为您提供扩展选项)。你也可以使用console.table。

下面你可以看到预览和展开的行为和区别(你可以在浏览器的控制台中运行它):

var arr = [];
console.log('empty array?',arr);//previews to [] but expands to array with one object
console.log('undefined wont change',arr[0])//logs undefined because arr is still empty
arr.push({name:'ben'});//mutate array to add one item

您可能正在记录稍后通过解决承诺或回调发生突变的内容。


推荐阅读