Я пробовал некоторые вещи angularjs. Поэтому у меня есть несколько массивов. Один из них - художники. это его основная структура из console.log(artists);
Элемент массива Javascript undefined
проблема заключается в том, что я не могу получить доступ к элементам массива индивидуально. Я много читал о ассоциативных массивах и мог задавать вопросы по SO, но никому это не помогло. Так что это либо очень глупая ошибка, которую я делаю, либо это нечто другое.
Вот несколько результатов, которые я получил с каждым массивом, который у меня есть.
console.log(artists[0]); //returns undefined
console.log(artists['0']); //returns undefined
console.log(artists.length); // returns 0 in spite of the fact it showed 20 previously
console.log(Array.isArray(artists)); //returns true
И да, я создал массив, как это в сервис, ChartService
var artists = [];
var artistids = [];
var tracks = [];
$http.get('https://api.spotify.com/v1/search/?q=genre:pop&type=artist').success(function (data) {
var items = data.artists.items;
items.forEach(function(item){
artists.push(item.name);
artistids.push(item.id);
var query = trackApi+item.id+'/top-tracks?country=SE'
$http.get(query).success(function (response) {
tracks.push({'preview': response.tracks[0].preview_url});
});
});
});
return {
Artists : artists,
Tracks : tracks
}
И мой контроллер
console.log(ChartService.Artists); //runs fine
console.log(ChartService.Tracks); //runs fine
$scope.tracks = ChartService.Tracks;
console.log($scope.tracks); //runs fine
console.log($scope.tracks[0]); //returns undefined
console.log($scope.tracks['0']); //returns undefined
console.log($scope.tracks.length); // returns 0 in spite of the fact it showed 20 previously
console.log(Array.isArray($scope.tracks)); //returns true
Итак, что вас смущает? Существует много случаев, когда массив может оставаться пустым. Ваш запрос HTTP может завершиться неудачей или он не сможет вернуть никаких элементов. –
есть прикрепленное изображение, которое показывает массив с консоли. Это явно не пусто. –
Я видел изображение. Но не ясно, вызвали ли вы 'console.log (artist.length)' сразу после 'console.log (artist)'? –