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)'還不清楚嗎? –