2011-08-04 4 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"속성을 갖는 객체의 배열입니다. 해당 "용어"속성을 필터링해야하며 해당 용어 속성이 "Mild.Net"과 같은 모든 항목을 반환합니다.

어떻게하면됩니까?

답변

1

단순히 모든 범주를 실행하지 않는 이유는 무엇입니까?

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

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; 
}); 

심지어 간단한 (I이 경우 휴대 확실하지 않다)

관련 문제