2013-10-09 109 views
0

我使用Java腳本從JSON陣列

Windows 8應用我的工作選擇特定對象獲得一些RSS並將其轉換爲使用谷歌API JSON格式的對象。所以然後我得到了一些JSON對象數組的RSS源。我需要做的是根據發佈的日期,我想在數組的所有對象中選擇幾個對象。這意味着我想要從6小時之前發佈的數組中獲取所有對象(在當前日期和6小時之前除了其他對象之外)。任何人都可以幫助我做到這一點..?

我使用此代碼獲取所有對象。

function loadNews() { 
var allEntries = []; 
var pendingRequestCount = listOfFeed.length; 
var onRequestFinished = function() { 
    pendingRequestCount--; 
    if (pendingRequestCount === 0) { 
     processItems(allEntries);   
    } 
}; 

for (var x = 0; x < listOfFeed.length; x++) { 

     feedburnerUrl = listOfFeed[x].url, 
      feedUrl = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&output=json&num=999&q=" + encodeURIComponent(feedburnerUrl); 
     WinJS.xhr({ 
      url: feedUrl, 
      responseType: "rss/json" 
     }).done(function complete(result) { 
      var jsonData = JSON.parse(result.response); 
      var entries = jsonData.responseData.feed.entries; 
      allEntries = allEntries.concat(entries); 

      allEntries.sort(function (entry1, entry2) {// Compare the entries by publish date 
       return Date.parse(entry2.publishedDate) - Date.parse(entry1.publishedDate); // return get milisecond 
      }); 
      onRequestFinished(); 
     }); 
    } //loop x finish} 

}

根據上面的線,allEntries提供JSON對象數組

非常感謝爲你的答案

+0

爲我們提供至少一部分JSON,因此我們可以知道我們在尋找什麼。 – Colandus

回答

0

你將不得不遍歷每個條目並比較日期。對於通過測試的每個日期,將其添加到另一個數組中。例如。

var newEntries = JSON.parse(result.response), 
    filteredEntries = [], 
    i, 
    testDate = new Date(); 

testDate = testDate.setHours(testDate.getHours() - 6); 

for(i = 0; i < newEntries.length; i++) { 
    if(newEntries[i].publishedDate > testDate) { 
     filteredEntries.push(newEntries[i]); 
    } 
} 

new Date()總是返回當前日期

Date.getHours()返回日期

Date.setHours(hour)的小時部分設置日期

如果hour是負值,日期的小時部分將去往前一天。舉例來說,如果您的日期是2013-5-3 04:33hour組件設置爲-2將日期改到2013-5-2 22:33

在上面的例子中,如果時間是凌晨2:45,將時間設定組件至-4,這將導致它將在下午8:45進行測試前一天。

+0

** Vincent McNabb **非常感謝您的支持。它真的適合我。再次感謝.. – SilentCoder