JavaScript尝试读取在控制台上给我未定义的对象

时间:2018-10-23 11:39:12

标签: javascript

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

我的控制台显示如下:

    {
    "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)

这将返回未定义

如何获取返回的名称?

2 个答案:

答案 0 :(得分:1)

基于显示整个data的评论,您需要使用data.ids[0].feat.read[0].name来获取名称。

请注意,idsread拥有数组,因此需要[0]

答案 1 :(得分:0)

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

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

您可能正在记录某些由于以后的解决承诺或回调而发生了变异的东西。