使用下划线从数组值中过滤json

时间:2017-02-03 09:58:18

标签: javascript json filter

我有一个需要在其上创建过滤器的对象数组。该列表包含JSON中的owner_id属性...

目前我只是在数组中循环所有,但是列表不应该取owner_id等于我的filterarray中的一个值的那个:

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

2 个答案:

答案 0 :(得分:0)

  

魔法应该在这里发生

它实际上不是魔术,而是一个返回truefalse的函数,无论该项是否应该在返回的数组中。

假设你的过滤器是一个数组,而不是现在的字符串(否则你必须用filter_arr = JSON.parse(filter)解析它),你可能想要写这样的过滤函数:

&#13;
&#13;
var filter = ["one",  "two", "three"];

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

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

答案 1 :(得分:0)

您定义的filter有一个字符串,而不是数组。

变化:

var filter = "[14657612, 2215375794]";

要:

var filter = [14657612, 2215375794];