2016-01-25 69 views
0

我在排序代碼中的結果時遇到了一些麻煩。每次結果順序都是隨機的......我該如何解決這個問題?使用JQuery排序Youtube API數組

我想用一個通道ID數組來創建重複GET代碼的函數。誰可以幫助我?非常感謝。格式

var ItemArray = []; 
 

 
var d1 = $.get("https://www.googleapis.com/youtube/v3/search?channelId=UCVQ2Z9dNQ2aJJ10f6SgBH0g&type=video&order=date&maxResults=1&part=snippet&KEY", 
 
     function (data) { 
 
      $.each(data.items, function (i, item) { 
 
idee = item.id.videoId; 
 
tittie = item.snippet.title; 
 
cattit = item.snippet.channelTitle; 
 
datie = item.snippet.publishedAt; 
 
ItemArray.push([datie, cattit, idee, tittie]); 
 
      }); 
 
     }); 
 

 
var d2 = $.get("https://www.googleapis.com/youtube/v3/search?channelId=UC2xskkQVFEpLcGFnNSLQY0A&type=video&order=date&maxResults=1&part=snippet&KEY", 
 
     function (data) { 
 
      $.each(data.items, function (i, item) { 
 
idee = item.id.videoId; 
 
tittie = item.snippet.title; 
 
cattit = item.snippet.channelTitle; 
 
datie = item.snippet.publishedAt; 
 
ItemArray.push([datie, cattit, idee, tittie]); 
 
      }); 
 
     }); 
 

 
var d3 = $.get("https://www.googleapis.com/youtube/v3/search?channelId=UCGHi_s4RrqUh4hsS4mLbiPg&type=video&order=date&maxResults=1&part=snippet&key=KEY", 
 
     function (data) { 
 
      $.each(data.items, function (i, item) { 
 
idee = item.id.videoId; 
 
tittie = item.snippet.title; 
 
cattit = item.snippet.channelTitle; 
 
datie = item.snippet.publishedAt; 
 
ItemArray.push([datie, cattit, idee, tittie]); 
 
      }); 
 
     }); 
 

 
var d4 = $.get("https://www.googleapis.com/youtube/v3/search?channelId=UCy5QKpDQC-H3z82Bw6EVFfg&type=video&order=date&maxResults=1&part=snippet&key=KEY", 
 
     function (data) { 
 
      $.each(data.items, function (i, item) { 
 
idee = item.id.videoId; 
 
tittie = item.snippet.title; 
 
cattit = item.snippet.channelTitle; 
 
datie = item.snippet.publishedAt; 
 
ItemArray.push([datie, cattit, idee, tittie]); 
 
      }); 
 
     }); 
 
$.when(d1, d2, d3, d4).done(function() { 
 

 
ItemArray.sort(function(a, b) { 
 
     return a[0] - b[0]; 
 
}); 
 

 
for(i=0;i<=ItemArray.length;i++){ 
 
$('#mytable').append('<tr><td>'+ItemArray[i][0]+'</td><td><a target="_blank" href="https://www.youtube.com/user/'+ItemArray[i][1]+'">'+ItemArray[i][1]+'</a></td><td><a target="_blank" href="https://www.youtube.com/watch?v='+ItemArray[i][2]+'">'+ItemArray[i][3]+'</a></td></tr>'); 
 
} 
 
}) 
 
})

+0

我覺得問題在於你的排序功能。根據您從YouTube獲取日期的方式,您可能需要將其轉換,因爲Array.prototype.sort要求您返回正數或負數。例如你是否嘗試過像'datie = new Date(item.snippet.publishedAt)'這樣的比較類似'return a [0] .getTime() - b [0] .getTime()'? – johnnycrab

+0

是的你是對的。其工作現在感謝:) 我有另一個問題。我想把channeld放在一個數組中,所以我只需要一個get函數。我如何做到這一點?然後,我應該寫什麼「什麼時候」......謝謝.. –

+0

我不認爲你可以在搜索調用中放置多個channeIIds(至少我沒有在YouTube API文檔中找到任何東西)。 – johnnycrab

回答

2

Accoding到YouTube Data API文檔,publishedAt被在ISO 8601(:毫米ss.sZ YYYY-MM-DDTHH)返回的指定。

由於Array.prototype.sort要求你返回一個正/負號,我會比較的毫秒數,即存儲你的約會像

datie = new Date(item.snippet.publishedAt)

,並在你的排序功能

比較

return a[0].getTime() - b[0].getTime()