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

问题描述:

{"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方法。我仍然无法达到正确的结果。我将不胜感激任何帮助。提前致谢。从json获取唯一对象的数组javascript

这是我实现

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); 
    } 
); 
/// 
}); 
+0

你有什么特别的尝试?具体结果是什么?我还建议您格式化数据,以便它是人类可读的。 – 2014-10-04 21:13:04

+0

请格式化您的代码以使其可读。它需要缩进和换行符。 – jfriend00 2014-10-04 21:34:28

我注意到,重复的“图像”对象,你别说加印第二个里面,所以我找到了解决办法通过这个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>
希望这正是你想要的!

+0

我不明白你的解决方案。另外,您将标题编辑为不同。这是为什么? – user3679294 2014-10-04 21:42:03

+0

我用http://jsonviewer.stack.hu/格式化.i没有改变任何东西。取消注释console.log来查看您将了解的对象 – 2014-10-04 21:44:46

+0

是否存在Underscore.js实现?因为,那就是我受到限制,$(#选项)无法识别。 – user3679294 2014-10-04 21:50:41