我有这个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);
感谢任何帮助!
答案 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);
这也说明了关系。