Я пытаюсь прочитать некоторые данные, что у меня есть.
Моя консоль показывает, что она выглядит так:
{
"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.
Как я могу получить его, чтобы вернуть имя?
На основе вашего комментария, показывающего все data
, вам нужно будет использовать data.ids[0].feat.read[0].name
чтобы получить имя.
Обратите внимание, что ids
и read
hold массивы, следовательно, необходимость в [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
Вы можете регистрировать то, что позже мутирует с помощью разрешающего обещания или обратного вызова.
console.log(JSON.stringify(data))