2017-02-03 1 views
0

필터를 만들 필요가있는 객체 배열이 있습니다. 목록은 그러나 목록 OWNER_ID 내 filterarray의 값 중 하나와 같은지 사람을 안됩니다, 단지 배열의 모든 반복 순간 메신저에서, JSON의 OWNER_ID 재산 ...밑줄이있는 배열 값의 json 필터

가 포함

var filter = "[14657612, 2215375794]"; 

      $.ajax({ 
       url: 'myEndPOint', 
       dataType: 'json', 
       success: function(data) { 
        var media = data.media; 
        var arr = []; 

        _.filter(media, function(val){ 
         //The magic should happen here, only return items that has'nt got an val.owner_id that is in "filter" array 
        }); 

        for(i=0; i < media.length; i++) { 
         var thumb = media[i].thumbnail; 
         var html = "<li><img src=" + thumb + " /></li>"; 
         arr.push(html); 
        } 
        $(".social-ribbon-target").append(arr); 
        $(".loading").css("display", "none");*/ 

       }, 
       error: function(error) { 
        console.log("error"); 
       } 
      }); 
+0

검사 기준이 하나. http://stackoverflow.com/a/14339601/3264939 –

+0

필터가 배열이 아니지만 문자열 –

답변

0

마법은 실제로 마법되지 않습니다 여기

발생해야하지만, 함수 true 또는 항목이 반환 된 배열에 있어야 여부를 false 반환합니다.

var filter = ["one", "two", "three"]; 
 

 
var media = [{owner_id: "one"}]; 
 

 
console.log(_.filter(media, function(item){ 
 
    return filter.indexOf(item.owner_id) >= 0; 
 
}))
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
:

는 지금처럼 필터가 배열이 아닌 문자열이라고 가정하면이 같은 필터링 함수를 작성 할 수 있습니다 (그렇지 않으면 filter_arr = JSON.parse(filter) 그것을 구문 분석해야)

+0

흠,하지만 일치하지 않습니다. _.filter (미디어 기능 (항목) { \t \t \t \t \t \t \t CONSOLE.LOG (filter.indexOf (item.owner_id)) \t \t \t \t \t \t \t 창 filter.indexOf (item.owner_id)> = 1; \t \t \t \t \t \t}); 비록 일부 항목에는 item.owner_id가 필터 배열의 항목이 있습니까? – hauge

+0

왜> = 1로 변경 했습니까? 그에 따라 문자열을 파싱 했습니까? –

+0

수정 된 답변과 스 니펫 –

0

filter에 배열 대신 문자열이 정의되어 있다고 정의했습니다.

변경 :

var filter = "[14657612, 2215375794]"; 

사람 :

var filter = [14657612, 2215375794];