从json javascript获取唯一对象的数组

时间:2014-10-04 20:50:51

标签: javascript json parse-platform underscore.js cloud-code

{"result":[[{"Image":{"__type":"File","name":"tfss-772aedb6-2767-4935-88f8-ae9280bc512b-expendables.jpg","url":"http://f
iles.parsetfss.com/49a11e0f-0c84-417e-b81b-58f5e97abae9/tfss-772aedb6-2767-4935-88f8-ae9280bc512b-expendables.jpg"},"Tit
le":"The Expendables 3","featured_actors":" Sylvester Stallone, Jason Statham, Jet Li","genre":"Action, Adventure, Thril
ler","imdb_rating":6.3,"plot_summary":"Barney augments his team with new blood for a personal battle: to take down Conra
d Stonebanks, the Expendables co-founder and notorious arms trader who is hell bent on wiping out Barney and every singl
e one of his associates.","running_time_mins":126,"trailer_video_link":"http://www.imdb.com/rg/VIDEO_PLAY/LINK//video/im
db/vi1896197145/","viewer_rating":"18","objectId":"8cTkg769gM","createdAt":"2014-08-16T21:32:28.318Z","updatedAt":"2014-
08-16T21:35:56.217Z","__type":"Object","className":"Movie"}],[{"Image":{"__type":"File","name":"tfss-65707002-e78b-47bd-
9c7a-da072f388e25-deliver.jpg","url":"http://files.parsetfss.com/49a11e0f-0c84-417e-b81b-58f5e97abae9/tfss-65707002-e78b
-47bd-9c7a-da072f388e25-deliver.jpg"},"Title":"Deliver Us From Evil","featured_actors":"Eric Bana, Édgar Ramírez, Oliv
ia Munn","genre":"Crime, Horror, Thriller","imdb_rating":6.5,"plot_summary":"New York police officer Ralph Sarchie inves
tigates a series of crimes. He joins forces with an unconventional priest, schooled in the rites of exorcism, to combat
the possessions that are terrorizing their city.","running_time_mins":118,"trailer_video_link":"http://www.imdb.com/vide
o/imdb/vi1746054425/?ref_=tt_ov_vi","viewer_rating":"15","objectId":"BoCM1zbOvh","createdAt":"2014-08-25T14:27:24.331Z",
"updatedAt":"2014-08-25T19:49:09.910Z","__type":"Object","className":"Movie"},{"Image":{"__type":"File","name":"tfss-772
aedb6-2767-4935-88f8-ae9280bc512b-expendables.jpg","url":"http://files.parsetfss.com/49a11e0f-0c84-417e-b81b-58f5e97abae
9/tfss-772aedb6-2767-4935-88f8-ae9280bc512b-expendables.jpg"},"Title":"The Expendables 3","featured_actors":" Sylvester
Stallone, Jason Statham, Jet Li","genre":"Action, Adventure, Thriller","imdb_rating":6.3,"plot_summary":"Barney augments
 his team with new blood for a personal battle: to take down Conrad Stonebanks, the Expendables co-founder and notorious
 arms trader who is hell bent on wiping out Barney and every single one of his associates.","running_time_mins":126,"tra
iler_video_link":"http://www.imdb.com/rg/VIDEO_PLAY/LINK//video/imdb/vi1896197145/","viewer_rating":"18","objectId":"8cT
kg769gM","createdAt":"2014-08-16T21:32:28.318Z","updatedAt":"2014-08-16T21:35:56.217Z","__type":"Object","className":"Mo
vie"}]]}

这是我使用curl的JSON响应。我试图从数组中检索唯一的对象。如您所见,它最终返回了第一个对象的副本。我已经尝试了很多解决方案,甚至是Underscore.js _.uniq方法。我仍然无法取得正确的结果。我将不胜感激任何帮助。提前谢谢。

这是我的实施

Parse.Promise.when(promises).then(
    function() {
        var result = [];
        _.each(arguments, function(object) {
            result.push(object); // each object is an array of movieIds
        });

        var movies = _.flatten(result);
        var uniqueMovies = _.uniq(movies, function(movie){
                                            return movie.Title;
        });

        response.success(uniqueMovies);
    },
    function(error) {
        response.error(error);
    }
);
///
});

1 个答案:

答案 0 :(得分:0)

我注意到副本"图像"你提到的对象附加在第二个中,所以我通过迭代这个json对象找到了一个解决方案,并且只采用每次迭代的第一个元素。 看一下这个:http://jsfiddle.net/csdtesting/527oevbc/



    var data = {
      "result": [
        [{
          "Image": {
            "__type": "File",
            "name": "tfss-772aedb6-2767-4935-88f8-ae9280bc512b-expendables.jpg",
            "url": "http://f iles.parsetfss.com/49a11e0f-0c84-417e-b81b-58f5e97abae9/tfss-772aedb6-2767-4935-88f8-ae9280bc512b-expendables.jpg"
          },
          "Title": "The Expendables 31",
          "featured_actors": " Sylvester Stallone, Jason Statham, Jet Li",
          "genre": "Action, Adventure, Thril ler",
          "imdb_rating": 6.3,
          "plot_summary": "Barney augments his team with new blood for a personal battle: to take down Conra d Stonebanks, the Expendables co-founder and notorious arms trader who is hell bent on wiping out Barney and every singl e one of his associates.",
          "running_time_mins": 126,
          "trailer_video_link": "http://www.imdb.com/rg/VIDEO_PLAY/LINK//video/im db/vi1896197145/",
          "viewer_rating": "18",
          "objectId": "8cTkg769gM",
          "createdAt": "2014-08-16T21:32:28.318Z",
          "updatedAt": "2014- 08-16T21:35:56.217Z",
          "__type": "Object",
          "className": "Movie"
        }],
        [{
          "Image": {
            "__type": "File",
            "name": "tfss-65707002-e78b-47bd- 9c7a-da072f388e25-deliver.jpg",
            "url": "http://files.parsetfss.com/49a11e0f-0c84-417e-b81b-58f5e97abae9/tfss-65707002-e78b -47bd-9c7a-da072f388e25-deliver.jpg"
          },
          "Title": "Deliver Us From Evil",
          "featured_actors": "Eric Bana, Édgar Ramírez, Oliv ia Munn",
          "genre": "Crime, Horror, Thriller",
          "imdb_rating": 6.5,
          "plot_summary": "New York police officer Ralph Sarchie inves tigates a series of crimes. He joins forces with an unconventional priest, schooled in the rites of exorcism, to combat the possessions that are terrorizing their city.",
          "running_time_mins": 118,
          "trailer_video_link": "http://www.imdb.com/vide o/imdb/vi1746054425/?ref_=tt_ov_vi",
          "viewer_rating": "15",
          "objectId": "BoCM1zbOvh",
          "createdAt": "2014-08-25T14:27:24.331Z",
          "updatedAt": "2014-08-25T19:49:09.910Z",
          "__type": "Object",
          "className": "Movie"
        }, {
          "Image": {
            "__type": "File",
            "name": "tfss-772 aedb6-2767-4935-88f8-ae9280bc512b-expendables.jpg",
            "url": "http://files.parsetfss.com/49a11e0f-0c84-417e-b81b-58f5e97abae 9/tfss-772aedb6-2767-4935-88f8-ae9280bc512b-expendables.jpg"
          },
          "Title": "The Expendables 3",
          "featured_actors": " Sylvester Stallone, Jason Statham, Jet Li",
          "genre": "Action, Adventure, Thriller",
          "imdb_rating": 6.3,
          "plot_summary": "Barney augments  his team with new blood for a personal battle: to take down Conrad Stonebanks, the Expendables co-founder and notorious  arms trader who is hell bent on wiping out Barney and every single one of his associates.",
          "running_time_mins": 126,
          "tra iler_video_link": "http://www.imdb.com/rg/VIDEO_PLAY/LINK//video/imdb/vi1896197145/",
          "viewer_rating": "18",
          "objectId": "8cT kg769gM",
          "createdAt": "2014-08-16T21:32:28.318Z",
          "updatedAt": "2014-08-16T21:35:56.217Z",
          "__type": "Object",
          "className": "Mo vie"
        }]
      ]
    }
    var jsonArray = data.result;
    $.each(jsonArray, function(index, data) {
      //adds all this values fron the array ,only from and to
      //console.log(data[0]);
      //alert(data[0].Title);
      //console.log(data[0].Title);
      document.write("-->" + data[0].Title);
    });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13; 希望这正是你想要的!