Я написал очень простое приложение, которое вытягивает все треки из списка плейлистов. Во-первых, он получает объекты JSON дорожки с использованием запроса AJAX и помещает их в массив с именем tracks[]
.Почему мои определенные строки печатаются на консоль как неопределенные?
Далее я перебираю этот массив и на каждой итерации вытягиваю строки для названия песни и исполнителя для каждого трека. Я помещал их в концентрированную строку. Затем эта строка сохраняется в новом массиве с именем complete
. Это делается для каждого трека.
По существу, complete
представляет собой массив, который выглядит как
[
"Sympathy for The Devil, The Rolling Stones",
"Come Together, The Beatles",
...
]
На данный момент у меня есть странный вопрос. Согласно отладчику хрома, массив complete
имеет все правильные значения внутри него. Однако, когда я пытаюсь сделать console.log
любым элементом complete
, я получаю значение «undefined». Еще страннее, если я console.log
выражение, которое я использую, чтобы получить две строки и сшить их, печатает правильное значение.
Почему это происходит и как я могу это исправить, чтобы он мог console.log
правильные значения
Вот код, который перебирает хранимых объектов JSON, сохраняет их в новом массиве, а также печатные издания:
function print() {
for(var x = 0; x < 4; x++) {
for(var n = 0; n < 100; n++) {
try {
//this logs correct
console.log(tracks[x].items[n].track.name + " " + tracks[x].items[n].track.artists[0].name);
//these have correct value
var deb = (tracks[x].items[n].track.name + " " + tracks[x].items[n].track.artists[0].name);
complete[z] = deb;
z++;
console.log(deb); //throws no error, prints fine
console.log(complete[z]); //prints undefined
} catch(err) {
//no exception ever thrown
}
}
}
}
Я не слишком много делаю JS, извините, если мне не хватает чего-то очевидного.
Где вы объявили 'complete' как массив и' z' как int? –
@ Œlrim прямо в начале скрипта, задолго до того, как эта функция вызывается: 'var complete = new Array (400);' Если это неверно, я извиняюсь, я не делаю много JS, если вы не можете сказать;) –