0
我正在尝试一些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(artists)后面立即调用'console.log(artists.length)'还不清楚吗? –