Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 过滤到JSON中的特定节点-使用grep或map?_Jquery_Json_Jsonp - Fatal编程技术网

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

Jquery 过滤到JSON中的特定节点-使用grep或map?,jquery,json,jsonp,Jquery,Json,Jsonp,我正在使用themoviedb.org的API检索有关电影的信息。它回来了 我需要用两种不同的方式过滤它,但不一定用同一个回调。在一个实例中,我只需要返回流派,在另一个实例中,我只需要返回size.toLowerCase()==“original”,对于ajax调用,这两个实例都在success中发生,即: $.ajax({ url: "http://api.themoviedb.org/2.1/Movie.getInfo/en/json/API_KEY/" + filmID,

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

我需要用两种不同的方式过滤它,但不一定用同一个回调。在一个实例中,我只需要返回流派,在另一个实例中,我只需要返回
size.toLowerCase()==“original”
,对于ajax调用,这两个实例都在
success
中发生,即:

$.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就是通过对每个元素执行特定的函数来向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
将构建完整电影对象的数组。

data.posters.size
将返回一个空数组,将其更改为
data.posters.image.size
会引发以下错误:
TypeError:“undefined”不是对象(评估“data.posters.image.size”)“
现在更好了吗?哈哈,这只是一个获得正确索引的例子,有时候嵌套的东西很难阅读!对不起,没有。什么是
eval