过滤到JSON中的特定节点 - 使用grep还是map?

时间:2011-10-07 16:31:21

标签: jquery json jsonp

我正在使用themoviedb.org的API来检索有关电影的信息。它正在返回this JSON data

我需要以两种不同的方式过滤它,但不一定在同一个回调中。在一个实例中,我只需要返回类型,在另一个实例中,我需要返回 size.toLowerCase() == 'original'所在的“背景”,并且两个实例都在success中进行对于ajax调用,即:

$.ajax({
    url: "http://api.themoviedb.org/2.1/Movie.getInfo/en/json/API_KEY/" + filmID,
    dataType: "jsonp",
    context: document.body,
    success: function(data){
        ...
    }
});

grep或map会在这里使用吗?无论如何,我如何有效地检索此信息?

2 个答案:

答案 0 :(得分:0)

你将使用grep过滤掉你想要的正确的东西并将它们放在另一个数组中,map将通过对每个元素执行特定的功能来向JSON添加更多内容

var results = array();

$.ajax({
    url: "http://api.themoviedb.org/2.1/Movie.getInfo/en/json/API_KEY/" + filmID,
    dataType: "jsonp",
    context: document.body,
    success: function(data){
        data = eval(data);
        results = $.grep(data, function(data) {
            return data[0].posters.image.size == "original";
        });
    }
});

答案 1 :(得分:0)

听起来像是$.map的工作 - 如果你只需要返回类型,$.map将允许你构建一个只包含对象部分的数组,而$.grep将构建一个完整的电影对象数组。