所以我正在做這個twitch.tv API頁面的免費代碼陣營。 我正試圖迭代通過流數組並將數據推送到結果數組,按查看者排序並顯示頁面上結果數組中的數據。javascript訪問數組以外的功能
問題是.append的東西在for循環中多次寫入infor。如果我將它移出for循環,則變量未定義。
聰明人有什麼想法嗎?
$(document).ready(function(){
getInfo();
var results = [];
function getInfo(){
var streamers = ["FreeCodeCamp","PlayHearthstone","summit1G","BradfordLee","Savjz","Z28RyanK"];
streamers.forEach(function(streamers){
$.getJSON('https://wind-bow.gomix.me/twitch-api/channels' + '/' + streamers + '?callback=?', function(data){
var name = data.display_name;
var game = data.game;
var logo = data.logo;
$.getJSON('https://wind-bow.gomix.me/twitch-api/streams' + '/' + streamers + '?callback=?', function(data){
var status = data.stream;
if(data.stream == undefined){
status = "Offline";
}else{
status = "Online";
}
var views = data.stream;
if(data.stream == undefined){
views = 0;
}else{
views = data.stream.viewers;
}
results.push({"name": name, "logo": logo, "status": status, "game": game, "views": views});
results.sort(function(b, a) {return parseFloat(a.views) -parseFloat(b.views);});
console.log(results);
results.forEach(function(results){
$('.main').append('<div><img src="' + logo + '"><p>' + name + '</p><p>' + status + '</p><p>' + game + '</p><p>' + views + '</p></div>');
})
} )
})
})
}
});
爲什麼你的'forEach'回調的函數參數與你的數組相同?他們都被稱爲'streamers'。由於名稱衝突,您可能遇到了一些範圍問題? – ryanyuyu
我以爲我必須通過飄帶陣列。我不知道我在做什麼顯然哈哈。 – lowercanada
'forEach'接受你已經內聯定義的函數。該匿名函數定義了自己的參數列表。 '.forEach'期望該函數接受來自父數組的代表'element,index,entireArray'的參數。請參閱[文檔](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach?v=example#Parameters)。嘗試改變你的函數參數,如'streamer'(否's')。 – ryanyuyu