Фильтрация по конкретным узлам в JSON - используйте grep или map? - PullRequest
0 голосов
/ 07 октября 2011

Я использую API themoviedb.org для получения информации о фильмах. Он возвращает эти данные 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 подходящим методом для использования здесь? Независимо от того, как я могу эффективно получить эту информацию?

Ответы [ 2 ]

0 голосов
/ 07 октября 2011

Похоже, что работа для $.map - если вам нужно только вернуть жанры, $.map позволит вам создать массив только из этих частей объекта, а $.grep создаст массив из полного фильма объекты.

0 голосов
/ 07 октября 2011

вы бы использовали 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";
        });
    }
});
...