2011-08-04 64 views
1

我想從完全按客戶端類別過濾的博客中使用jQuery過濾最近的帖子列表。我非常接近,在這裏有很多帖子在stackoverflow這是非常有用的。這是我到目前爲止...如何從Blogger API中獲取JSON按類別過濾

<script type="text/javascript"> 
     $(document).ready(function() { 
      BloggerImporter.getPosts(); 
     }); 

     var BloggerImporter = { 
      getPosts: function() { 
       var feedURL = "http://blog.mild.net/feeds/posts/default"; 
       var paras = { 
        alt: 'json-in-script' 
       }; 

       $.ajax({ 
        url: feedURL, 
        type: 'get', 
        dataType: "jsonp", 
        success: BloggerImporter.onGotPostData, 
        data: paras 
       }); 
      }, 

      onGotPostData: function (data) { 

       var feed = data.feed; 
       var entries = feed.entry || []; 

       var filteredEntries = $.grep(entries, function (value) { 
        return value.category == 'Mild.Net' 
       }); 

       $("#blogTemplate").tmpl(filteredEntries).appendTo("#posts"); 

      } 
     } 

    </script> 

現在,問題是,每個條目可以有多個類別。因此,在上面的那個jQuery grep函數中,「category」是一個對象數組,其中每個對象都有一個「term」屬性。我需要通過該「term」屬性進行過濾,返回該術語屬性等於「Mild.Net」的所有條目。

我該怎麼做?

回答

1

爲什麼你不簡單地通過所有的類別?

var filteredEntries = $.grep(entries, function (value) { 
    if(! value.category) { 
     return false; 
    } 

    for(var i in value.category) { 
     if(value.category[i].term == 'Mild.Net') { 
     return true; 
     } 
    } 
    return false; 
}); 

或者更簡單(我不知道在這種情況下,便攜性):

var filteredEntries = $.grep(entries, function (value) { 
    return !value.category ? false : value.category.some(function(category) { 
     return category.term == 'Mild.Net'; 
    }); 
}); 
相關問題