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

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

我需要以两种不同的方式过滤它,但不一定在同一个回调中。 在一个实例中,我只需要返回类型,在另一个实例中,我需要返回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是否适合在这里使用? 无论如何,我如何有效地检索此信息?

你将使用grep过滤掉你想要的正确的东西并将它们放在另一个数组中,map将通过对每个元素执行特定的function来向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"; }); } }); 

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