jQuery过滤结果

时间:2015-01-20 12:11:28

标签: javascript jquery

我需要你的帮助。我通过ajax从Tumblr获取哈希标签数据,然后我循环输出它们。在我输出标签之前我想做一些过滤,如果我有4个相同的散列标签,我需要输出一次。

以下是没有过滤的示例。

jsFiddle

$.ajax({
    url: "http://api.tumblr.com/v2/blog/testhermes.tumblr.com/posts",
    dataType: 'jsonp',
    data: {
        api_key : "d01TZzpbq12cD7Zv7dM4EwLndkAAIEsExnLl9PNvsHYuyuDwKq"
    },
    success: function(results){
        var posts = results.response.posts;
        var text ='';
        for (var i in posts)
        {
            p = posts[i];
            a = p.tags;


            for(var j in a) {
                c = a[j];
                text += '<a href="'+c+'">'+ c +'</a><br>';

                $("body").append(text);
            }
        }
    }
});

谢谢

2 个答案:

答案 0 :(得分:2)

只需跟踪您在对象中已经看过的标记,然后只有在您之前看不到该标记时才输出该链接。

var seen_tags = {};
for (var i in posts)
{
    p = posts[i];
    a = p.tags;

    for(var j in a) {
        c = a[j];
        if(!(c in seen_tags)) {
            text += '<a href="'+c+'">'+ c +'</a><br>';

             $("body").append(text);
             seen_tags[c] = true;
        }
    }
}

答案 1 :(得分:2)

你只需要在数组中保存值,并在每次插入项目时检查它是否存在于数组中。

$.ajax({
url: "http://api.tumblr.com/v2/blog/testhermes.tumblr.com/posts",
dataType: 'jsonp',
data: {
    api_key : "d01TZzpbq12cD7Zv7dM4EwLndkAAIEsExnLl9PNvsHYuyuDwKq"
},
success: function(results){
    var posts = results.response.posts;
    var text ='';
    var arr = [];
    for (var i in posts)
    {
        p = posts[i];
        a = p.tags;


        for(var j in a) {
            c = $.trim(a[j]);

            if(jQuery.inArray(c, arr) == -1)
            {

                arr.push(c);

                var text = '<a href="'+c+'">'+ c +'</a><br>';

                $("body").append(text);

            }


        }
    }
}

});

以下是JS FIDDLE链接。