Jquery json响应迭代与条件

时间:2014-09-04 23:06:33

标签: jquery json

我有这个json的回应......

{
"albums": {
  "data": [
     {
        "created_time": "2011-12-29T11:29:03+0000",
        "id": "10150573478667193",
        "name": "Timeline Photos",
        "photos": {
           "data": [
              {
                 "created_time": "2014-09-04T06:45:15+0000",
                 "source": "https://link.jpg",
                 "id": "10152743142372193",
                 "likes": {
                    "data": [
                       {
                          "id": "10202250935623343",
                          "name": "Name LastName"
                       }
                    ],
                    "summary": {
                       "total_count": 13
                    }
                 }
              }
           ]
        }
     }
  ]
  }
 }
}

实际的响应有更多的专辑对象和照片对象,但我缩短了它以显示...现在我要做的是迭代通过响应并获得"源"在几张相册中,total_count(最喜欢的照片)最高的照片的链接。我设法得到最高的total_count但我无法获得"来源" link.Here是我得到最高total_count -

var array=[];
$.each(response.albums.data,function(index,obj){
            //console.log("index1:" + index + " object1:" +obj);
            $.each(obj,function(index2,obj2){
            //console.log("index2:" + index2 + " object2:" +obj2);
            if(typeof obj2 == 'object'){
                $.each(obj2.data,function(index3,obj3){
                //console.log("index3:" + index3 + " object3:" +obj3);
                        $.each(obj3,function(index4,obj4){
                        //console.log("index4:" + index4 + " object4:" +obj4);
                            if(typeof obj4 == 'object'){
                                $.each(obj4,function(index5,obj5){
                                //console.log("index5:" + index5 + " object5:" +obj5);
                                    if(index5 == 'summary'){
                                        $.each(obj5,function(index6,obj6){
                                            //console.log("index6:" + index6 + " object6:" +obj6);
                                            array[array.length] = obj6; 



                                        });

                                    }
                                });
                            }
                        });         
                });
            }
            }); 
        });
        var mostLikedNumber=Math.max.apply(Math,array);
        console.log("Most liked - " +mostLikedNumber);

感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

您的脚本似乎过于复杂:

var mostLikes = -1;
var mostLiked = [];

$.each(response.albums.data, function (idx, album) {
    $.each(album.photos.data, function (idx, photo) {
        if (photo.likes.summary.total_count > mostLikes) {
            mostLikes = photo.likes.summary.total_count;
            mostLiked = [photo.source];
        } else if (photo.likes.summary.total_count == mostLikes) {
            mostLiked.push(photo.source);
        }
    });
});

console.log("Most liked - " + mostLiked.join(",") + " = " + mostLikes);

这也说明了关系。

演示:http://jsfiddle.net/jtbowden/dc84k3x0/